CINXE.COM
Compose Animation | Jetpack | Android Developers
<!doctype html> <html lang="en" dir="ltr"> <head> <meta name="google-signin-client-id" content="721724668570-nbkv1cfusk7kk4eni4pjvepaus73b13t.apps.googleusercontent.com"> <meta name="google-signin-scope" content="profile email https://www.googleapis.com/auth/developerprofiles https://www.googleapis.com/auth/developerprofiles.award"> <meta property="og:site_name" content="Android Developers"> <meta property="og:type" content="website"><meta name="theme-color" content="#34a853"><meta charset="utf-8"> <meta content="IE=Edge" http-equiv="X-UA-Compatible"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="manifest" href="/_pwa/android/manifest.json" crossorigin="use-credentials"> <link rel="preconnect" href="//www.gstatic.com" crossorigin> <link rel="preconnect" href="//fonts.gstatic.com" crossorigin> <link rel="preconnect" href="//fonts.googleapis.com" crossorigin> <link rel="preconnect" href="//apis.google.com" crossorigin> <link rel="preconnect" href="//www.google-analytics.com" crossorigin><link rel="stylesheet" href="//fonts.googleapis.com/css?family=Google+Sans:400,500,600,700|Google+Sans+Text:400,400italic,500,500italic,600,600italic,700,700italic|Roboto+Mono:400,500,700&display=swap"> <link rel="stylesheet" href="//fonts.googleapis.com/css2?family=Material+Icons&family=Material+Symbols+Outlined&display=block"><link rel="stylesheet" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/android/css/app.css"> <link rel="stylesheet" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/android/css/dark-theme.css" disabled> <link rel="shortcut icon" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/android/images/favicon.svg"> <link rel="apple-touch-icon" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/android/images/touchicon-180.png"><link rel="canonical" href="https://developer.android.com/jetpack/androidx/releases/compose-animation"><link rel="search" type="application/opensearchdescription+xml" title="Android Developers" href="https://developer.android.com/s/opensearch.xml"> <link rel="alternate" hreflang="en" href="https://developer.android.com/jetpack/androidx/releases/compose-animation" /><link rel="alternate" hreflang="x-default" href="https://developer.android.com/jetpack/androidx/releases/compose-animation" /><link rel="alternate" hreflang="ar" href="https://developer.android.com/jetpack/androidx/releases/compose-animation?hl=ar" /><link rel="alternate" hreflang="bn" href="https://developer.android.com/jetpack/androidx/releases/compose-animation?hl=bn" /><link rel="alternate" hreflang="zh-Hans" href="https://developer.android.com/jetpack/androidx/releases/compose-animation?hl=zh-cn" /><link rel="alternate" hreflang="zh-Hant" href="https://developer.android.com/jetpack/androidx/releases/compose-animation?hl=zh-tw" /><link rel="alternate" hreflang="fa" href="https://developer.android.com/jetpack/androidx/releases/compose-animation?hl=fa" /><link rel="alternate" hreflang="fr" href="https://developer.android.com/jetpack/androidx/releases/compose-animation?hl=fr" /><link rel="alternate" hreflang="de" href="https://developer.android.com/jetpack/androidx/releases/compose-animation?hl=de" /><link rel="alternate" hreflang="he" href="https://developer.android.com/jetpack/androidx/releases/compose-animation?hl=he" /><link rel="alternate" hreflang="hi" href="https://developer.android.com/jetpack/androidx/releases/compose-animation?hl=hi" /><link rel="alternate" hreflang="id" href="https://developer.android.com/jetpack/androidx/releases/compose-animation?hl=id" /><link rel="alternate" hreflang="it" href="https://developer.android.com/jetpack/androidx/releases/compose-animation?hl=it" /><link rel="alternate" hreflang="ja" href="https://developer.android.com/jetpack/androidx/releases/compose-animation?hl=ja" /><link rel="alternate" hreflang="ko" href="https://developer.android.com/jetpack/androidx/releases/compose-animation?hl=ko" /><link rel="alternate" hreflang="pl" href="https://developer.android.com/jetpack/androidx/releases/compose-animation?hl=pl" /><link rel="alternate" hreflang="pt-BR" href="https://developer.android.com/jetpack/androidx/releases/compose-animation?hl=pt-br" /><link rel="alternate" hreflang="ru" href="https://developer.android.com/jetpack/androidx/releases/compose-animation?hl=ru" /><link rel="alternate" hreflang="es-419" href="https://developer.android.com/jetpack/androidx/releases/compose-animation?hl=es-419" /><link rel="alternate" hreflang="th" href="https://developer.android.com/jetpack/androidx/releases/compose-animation?hl=th" /><link rel="alternate" hreflang="tr" href="https://developer.android.com/jetpack/androidx/releases/compose-animation?hl=tr" /><link rel="alternate" hreflang="vi" href="https://developer.android.com/jetpack/androidx/releases/compose-animation?hl=vi" /><title>Compose Animation | Jetpack | Android Developers</title> <meta property="og:title" content="Compose Animation | Jetpack | Android Developers"><meta property="og:url" content="https://developer.android.com/jetpack/androidx/releases/compose-animation"><meta property="og:image" content="https://developer.android.com/static/images/social/android-developers.png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="675"><meta property="og:locale" content="en"><meta name="twitter:card" content="summary_large_image"><script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Article", "headline": "Compose Animation" } </script><script type="application/ld+json"> { "@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [{ "@type": "ListItem", "position": 1, "name": "Get started", "item": "https://developer.android.com/get-started/overview" },{ "@type": "ListItem", "position": 2, "name": "Jetpack", "item": "https://developer.android.com/jetpack" },{ "@type": "ListItem", "position": 3, "name": "Compose Animation", "item": "https://developer.android.com/jetpack/androidx/releases/compose-animation" }] } </script> <link rel="stylesheet" href="/extras.css"></head> <body class="" template="page" theme="android-theme" type="article" appearance layout="docs" display-toc pending> <devsite-progress type="indeterminate" id="app-progress"></devsite-progress> <section class="devsite-wrapper"> <devsite-cookie-notification-bar></devsite-cookie-notification-bar><devsite-header role="banner"> <div class="devsite-header--inner nocontent"> <div class="devsite-top-logo-row-wrapper-wrapper"> <div class="devsite-top-logo-row-wrapper"> <div class="devsite-top-logo-row"> <button type="button" id="devsite-hamburger-menu" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Navigation menu button" visually-hidden aria-label="Open menu"> </button> <div class="devsite-product-name-wrapper"> <a href="/" class="devsite-site-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Site logo" track-type="globalNav" track-name="androidDevelopers" track-metadata-position="nav" track-metadata-eventDetail="nav"> <picture> <source srcset="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/android/images/lockup-dark-theme.svg" media="(prefers-color-scheme: dark)" class="devsite-dark-theme" alt="Android Developers"> <img src="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/android/images/lockup.svg" class="devsite-site-logo" alt="Android Developers"> </picture> </a> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item "> </li> </ul> </span> </div> <div class="devsite-top-logo-row-middle"> <div class="devsite-header-upper-tabs"> <devsite-tabs class="upper-tabs"> <nav class="devsite-tabs-wrapper" aria-label="Upper tabs"> <tab class="devsite-dropdown devsite-dropdown-full devsite-active "> <a href="https://developer.android.com/jetpack" track-metadata-eventdetail="https://developer.android.com/jetpack" class="devsite-tabs-content gc-analytics-event android-dropdown-tab" track-type="nav" track-metadata-position="nav - essentials" track-metadata-module="primary nav" aria-label="Essentials, selected" data-category="Site-Wide Custom Events" data-label="Tab: Essentials" track-name="essentials" > Essentials </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Essentials" track-type="nav" track-metadata-eventdetail="https://developer.android.com/jetpack" track-metadata-position="nav - essentials" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Essentials" track-name="essentials" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column android-dropdown android-dropdown-primary android-dropdown-studio"> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>Gemini in Android Studio</li> <li class="devsite-nav-description">Your AI development companion for Android development. </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/gemini-in-android" track-type="nav" track-metadata-eventdetail="https://developer.android.com/gemini-in-android" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="gemini in android studio" tooltip class="button button-primary" > <div class="devsite-nav-item-title"> Learn more </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/studio" track-type="nav" track-metadata-eventdetail="https://developer.android.com/studio" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="gemini in android studio" tooltip class="button button-white" > <div class="devsite-nav-item-title"> Get Android Studio </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column android-dropdown"> <ul class="devsite-tabs-dropdown-section android-dropdown-section-icon android-dropdown-section-icon-launch"> <li class="devsite-nav-title" role="heading" tooltip>Get started</li> <li class="devsite-nav-description">Start by creating your first app. Go deeper with our training courses or explore app development on your own. </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/get-started/overview" track-type="nav" track-metadata-eventdetail="https://developer.android.com/get-started/overview" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="get started" tooltip > <div class="devsite-nav-item-title"> Hello world </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/courses" track-type="nav" track-metadata-eventdetail="https://developer.android.com/courses" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="get started" tooltip > <div class="devsite-nav-item-title"> Training courses </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/get-started/codelabs" track-type="nav" track-metadata-eventdetail="https://developer.android.com/get-started/codelabs" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="get started" tooltip > <div class="devsite-nav-item-title"> Tutorials </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/kotlin" track-type="nav" track-metadata-eventdetail="https://developer.android.com/kotlin" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="get started" tooltip > <div class="devsite-nav-item-title"> Kotlin for Android </div> </a> </li> <li class="devsite-nav-item"> <a href="https://play.google.com/console/about/guides/monetize/" track-type="nav" track-metadata-eventdetail="https://play.google.com/console/about/guides/monetize/" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="get started" tooltip > <div class="devsite-nav-item-title"> Monetization with Play ↗️ </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column android-dropdown"> <ul class="devsite-tabs-dropdown-section android-dropdown-section-icon android-dropdown-section-icon-multiple-screens"> <li class="devsite-nav-title" role="heading" tooltip>Extend by device</li> <li class="devsite-nav-description">Build apps that give your users seamless experiences from phones to tablets, watches, and more. </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/adaptive-apps" track-type="nav" track-metadata-eventdetail="https://developer.android.com/adaptive-apps" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="extend by device" tooltip > <div class="devsite-nav-item-title"> Adaptive apps </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/wear" track-type="nav" track-metadata-eventdetail="https://developer.android.com/wear" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="extend by device" tooltip > <div class="devsite-nav-item-title"> Wear OS </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/cars" track-type="nav" track-metadata-eventdetail="https://developer.android.com/cars" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="extend by device" tooltip > <div class="devsite-nav-item-title"> Android for Cars </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/tv" track-type="nav" track-metadata-eventdetail="https://developer.android.com/tv" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="extend by device" tooltip > <div class="devsite-nav-item-title"> Android TV </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/chrome-os" track-type="nav" track-metadata-eventdetail="https://developer.android.com/chrome-os" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="extend by device" tooltip > <div class="devsite-nav-item-title"> ChromeOS </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/multi-device-development" track-type="nav" track-metadata-eventdetail="https://developer.android.com/multi-device-development" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="extend by device" tooltip > <div class="devsite-nav-item-title"> Cross-device SDK </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column android-dropdown"> <ul class="devsite-tabs-dropdown-section android-dropdown-section-icon android-dropdown-section-icon-platform"> <li class="devsite-nav-title" role="heading" tooltip>Build by category</li> <li class="devsite-nav-description">Learn to build for your use case by following Google's prescriptive and opinionated guidance. </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/games" track-type="nav" track-metadata-eventdetail="https://developer.android.com/games" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="build by category" tooltip > <div class="devsite-nav-item-title"> Games </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/media" track-type="nav" track-metadata-eventdetail="https://developer.android.com/media" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="build by category" tooltip > <div class="devsite-nav-item-title"> Camera & Media </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/social-and-messaging" track-type="nav" track-metadata-eventdetail="https://developer.android.com/social-and-messaging" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="build by category" tooltip > <div class="devsite-nav-item-title"> Social & messaging </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/health-and-fitness" track-type="nav" track-metadata-eventdetail="https://developer.android.com/health-and-fitness" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="build by category" tooltip > <div class="devsite-nav-item-title"> Health & Fitness </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/productivity" track-type="nav" track-metadata-eventdetail="https://developer.android.com/productivity" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="build by category" tooltip > <div class="devsite-nav-item-title"> Productivity </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/work/overview" track-type="nav" track-metadata-eventdetail="https://developer.android.com/work/overview" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="build by category" tooltip > <div class="devsite-nav-item-title"> Enterprise apps </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column android-dropdown"> <ul class="devsite-tabs-dropdown-section android-dropdown-section-icon android-dropdown-section-icon-stars"> <li class="devsite-nav-title" role="heading" tooltip>Get the latest</li> <li class="devsite-nav-description">Stay in touch with the latest releases throughout the year, join our preview programs, and give us your feedback. </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/latest-updates" track-type="nav" track-metadata-eventdetail="https://developer.android.com/latest-updates" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="get the latest" tooltip > <div class="devsite-nav-item-title"> Latest updates </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/latest-updates/experimental" track-type="nav" track-metadata-eventdetail="https://developer.android.com/latest-updates/experimental" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="get the latest" tooltip > <div class="devsite-nav-item-title"> Experimental updates </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/studio/preview" track-type="nav" track-metadata-eventdetail="https://developer.android.com/studio/preview" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="get the latest" tooltip > <div class="devsite-nav-item-title"> Android Studio preview </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/jetpack/androidx/versions" track-type="nav" track-metadata-eventdetail="https://developer.android.com/jetpack/androidx/versions" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="get the latest" tooltip > <div class="devsite-nav-item-title"> Jetpack & Compose libraries </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/training/wearables/versions/4" track-type="nav" track-metadata-eventdetail="https://developer.android.com/training/wearables/versions/4" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="get the latest" tooltip > <div class="devsite-nav-item-title"> Wear OS preview </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/design-for-safety/privacy-sandbox" track-type="nav" track-metadata-eventdetail="https://developer.android.com/design-for-safety/privacy-sandbox" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="get the latest" tooltip > <div class="devsite-nav-item-title"> Privacy Sandbox </div> </a> </li> </ul> </div> </div> </div> </tab> <tab class="devsite-dropdown devsite-dropdown-full "> <a href="https://developer.android.com/design" track-metadata-eventdetail="https://developer.android.com/design" class="devsite-tabs-content gc-analytics-event android-dropdown-tab" track-type="nav" track-metadata-position="nav - design & plan" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Design & Plan" track-name="design & plan" > Design & Plan </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Design & Plan" track-type="nav" track-metadata-eventdetail="https://developer.android.com/design" track-metadata-position="nav - design & plan" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Design & Plan" track-name="design & plan" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column android-dropdown"> <ul class="devsite-tabs-dropdown-section android-dropdown-section-icon android-dropdown-section-icon-layout"> <li class="devsite-nav-title" role="heading" tooltip>UI Design</li> <li class="devsite-nav-description">Design a beautiful user interface using Android best practices.</li> <li class="devsite-nav-item"> <a href="https://developer.android.com/design/ui" track-type="nav" track-metadata-eventdetail="https://developer.android.com/design/ui" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="ui design" tooltip > <div class="devsite-nav-item-title"> Design for Android </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/design/ui/mobile" track-type="nav" track-metadata-eventdetail="https://developer.android.com/design/ui/mobile" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="ui design" tooltip > <div class="devsite-nav-item-title"> Mobile </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/design/ui/large-screens" track-type="nav" track-metadata-eventdetail="https://developer.android.com/design/ui/large-screens" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="ui design" tooltip > <div class="devsite-nav-item-title"> Large screens (e.g., tablets) </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/design/ui/widget" track-type="nav" track-metadata-eventdetail="https://developer.android.com/design/ui/widget" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="ui design" tooltip > <div class="devsite-nav-item-title"> Widgets </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/design/ui/wear" track-type="nav" track-metadata-eventdetail="https://developer.android.com/design/ui/wear" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="ui design" tooltip > <div class="devsite-nav-item-title"> Wear OS </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/design/ui/tv" track-type="nav" track-metadata-eventdetail="https://developer.android.com/design/ui/tv" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="ui design" tooltip > <div class="devsite-nav-item-title"> Android TV </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column android-dropdown"> <ul class="devsite-tabs-dropdown-section android-dropdown-section-icon android-dropdown-section-icon-design"> <li class="devsite-nav-title" role="heading" tooltip>Architecture</li> <li class="devsite-nav-description">Design robust, testable, and maintainable app logic and services.</li> <li class="devsite-nav-item"> <a href="https://developer.android.com/topic/architecture/intro" track-type="nav" track-metadata-eventdetail="https://developer.android.com/topic/architecture/intro" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="architecture" tooltip > <div class="devsite-nav-item-title"> Introduction </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/topic/libraries/view-binding" track-type="nav" track-metadata-eventdetail="https://developer.android.com/topic/libraries/view-binding" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="architecture" tooltip > <div class="devsite-nav-item-title"> Libraries </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/guide/navigation/navigation-principles" track-type="nav" track-metadata-eventdetail="https://developer.android.com/guide/navigation/navigation-principles" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="architecture" tooltip > <div class="devsite-nav-item-title"> Navigation </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/topic/modularization" track-type="nav" track-metadata-eventdetail="https://developer.android.com/topic/modularization" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="architecture" tooltip > <div class="devsite-nav-item-title"> Modularization </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/training/testing/fundamentals" track-type="nav" track-metadata-eventdetail="https://developer.android.com/training/testing/fundamentals" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="architecture" tooltip > <div class="devsite-nav-item-title"> Testing </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column android-dropdown"> <ul class="devsite-tabs-dropdown-section android-dropdown-section-icon android-dropdown-section-icon-vitals"> <li class="devsite-nav-title" role="heading" tooltip>Quality</li> <li class="devsite-nav-description">Plan for app quality and align with Play store guidelines.</li> <li class="devsite-nav-item"> <a href="https://developer.android.com/quality" track-type="nav" track-metadata-eventdetail="https://developer.android.com/quality" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="quality" tooltip > <div class="devsite-nav-item-title"> Overview </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/quality/core-value" track-type="nav" track-metadata-eventdetail="https://developer.android.com/quality/core-value" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="quality" tooltip > <div class="devsite-nav-item-title"> Core value </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/quality/user-experience" track-type="nav" track-metadata-eventdetail="https://developer.android.com/quality/user-experience" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="quality" tooltip > <div class="devsite-nav-item-title"> User experience </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/quality/technical" track-type="nav" track-metadata-eventdetail="https://developer.android.com/quality/technical" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="quality" tooltip > <div class="devsite-nav-item-title"> Technical quality </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/quality/privacy-and-security" track-type="nav" track-metadata-eventdetail="https://developer.android.com/quality/privacy-and-security" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="quality" tooltip > <div class="devsite-nav-item-title"> Security </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column android-dropdown"> <ul class="devsite-tabs-dropdown-section android-dropdown-section-icon android-dropdown-section-icon-security-2"> <li class="devsite-nav-title" role="heading" tooltip>Security</li> <li class="devsite-nav-description">Safeguard users against threats and ensure a secure Android experience.</li> <li class="devsite-nav-item"> <a href="https://developer.android.com/security" track-type="nav" track-metadata-eventdetail="https://developer.android.com/security" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="security" tooltip > <div class="devsite-nav-item-title"> Overview </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/privacy-and-security/about" track-type="nav" track-metadata-eventdetail="https://developer.android.com/privacy-and-security/about" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="security" tooltip > <div class="devsite-nav-item-title"> Privacy </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/identity" track-type="nav" track-metadata-eventdetail="https://developer.android.com/identity" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="security" tooltip > <div class="devsite-nav-item-title"> Identity </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/security/fraud-prevention" track-type="nav" track-metadata-eventdetail="https://developer.android.com/security/fraud-prevention" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="security" tooltip > <div class="devsite-nav-item-title"> Fraud prevention </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column android-dropdown"> <ul class="devsite-tabs-dropdown-section android-dropdown-section-icon android-dropdown-section-icon-earth"> <li class="devsite-nav-title" role="heading" tooltip>Build for Billions</li> <li class="devsite-nav-description">Create the best experience for entry-level devices</li> <li class="devsite-nav-item"> <a href="https://developer.android.com/build-for-billions" track-type="nav" track-metadata-eventdetail="https://developer.android.com/build-for-billions" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="build for billions" tooltip > <div class="devsite-nav-item-title"> Overview </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/docs/quality-guidelines/build-for-billions" track-type="nav" track-metadata-eventdetail="https://developer.android.com/docs/quality-guidelines/build-for-billions" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="build for billions" tooltip > <div class="devsite-nav-item-title"> About new markets </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/guide/topics/androidgo" track-type="nav" track-metadata-eventdetail="https://developer.android.com/guide/topics/androidgo" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="build for billions" tooltip > <div class="devsite-nav-item-title"> Android (Go edition) </div> </a> </li> </ul> </div> </div> </div> </tab> <tab class="devsite-dropdown devsite-dropdown-full "> <a href="https://developer.android.com/develop" track-metadata-eventdetail="https://developer.android.com/develop" class="devsite-tabs-content gc-analytics-event android-dropdown-tab" track-type="nav" track-metadata-position="nav - develop" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Develop" track-name="develop" > Develop </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Develop" track-type="nav" track-metadata-eventdetail="https://developer.android.com/develop" track-metadata-position="nav - develop" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Develop" track-name="develop" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column android-dropdown android-dropdown-primary android-dropdown-ai"> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>Build AI experiences</li> <li class="devsite-nav-description">Build AI-powered Android apps with Gemini APIs and more. </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/ai" track-type="nav" track-metadata-eventdetail="https://developer.android.com/ai" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="build ai experiences" tooltip class="button button-primary" > <div class="devsite-nav-item-title"> Get started </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column android-dropdown"> <ul class="devsite-tabs-dropdown-section android-dropdown-section-icon android-dropdown-section-icon-flag"> <li class="devsite-nav-title" role="heading" tooltip>Core areas</li> <li class="devsite-nav-description">Get the samples and docs for the features you need.</li> <li class="devsite-nav-item"> <a href="https://developer.android.com/samples" track-type="nav" track-metadata-eventdetail="https://developer.android.com/samples" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="core areas" tooltip > <div class="devsite-nav-item-title"> Samples </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/quick-guides" track-type="nav" track-metadata-eventdetail="https://developer.android.com/quick-guides" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="core areas" tooltip > <div class="devsite-nav-item-title"> Try Quick Guidesᵇᵉᵗᵃ </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/develop/ui" track-type="nav" track-metadata-eventdetail="https://developer.android.com/develop/ui" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="core areas" tooltip > <div class="devsite-nav-item-title"> User interfaces </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/guide/topics/permissions/overview" track-type="nav" track-metadata-eventdetail="https://developer.android.com/guide/topics/permissions/overview" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="core areas" tooltip > <div class="devsite-nav-item-title"> Permissions </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/develop/background-work" track-type="nav" track-metadata-eventdetail="https://developer.android.com/develop/background-work" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="core areas" tooltip > <div class="devsite-nav-item-title"> Background work </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/guide/topics/data" track-type="nav" track-metadata-eventdetail="https://developer.android.com/guide/topics/data" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="core areas" tooltip > <div class="devsite-nav-item-title"> Data and files </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/develop#core-areas" track-type="nav" track-metadata-eventdetail="https://developer.android.com/develop#core-areas" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="core areas" tooltip > <div class="devsite-nav-item-title"> All core areas ⤵️ </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column android-dropdown"> <ul class="devsite-tabs-dropdown-section android-dropdown-section-icon android-dropdown-section-icon-tools-2"> <li class="devsite-nav-title" role="heading" tooltip>Tools and workflow</li> <li class="devsite-nav-description">Use the IDE to write and build your app, or create your own pipeline.</li> <li class="devsite-nav-item"> <a href="https://developer.android.com/studio/write" track-type="nav" track-metadata-eventdetail="https://developer.android.com/studio/write" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="tools and workflow" tooltip > <div class="devsite-nav-item-title"> Write and debug code </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/build/gradle-build-overview" track-type="nav" track-metadata-eventdetail="https://developer.android.com/build/gradle-build-overview" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="tools and workflow" tooltip > <div class="devsite-nav-item-title"> Build projects </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/training/testing" track-type="nav" track-metadata-eventdetail="https://developer.android.com/training/testing" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="tools and workflow" tooltip > <div class="devsite-nav-item-title"> Test your app </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/topic/performance/overview" track-type="nav" track-metadata-eventdetail="https://developer.android.com/topic/performance/overview" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="tools and workflow" tooltip > <div class="devsite-nav-item-title"> Performance </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/tools" track-type="nav" track-metadata-eventdetail="https://developer.android.com/tools" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="tools and workflow" tooltip > <div class="devsite-nav-item-title"> Command-line tools </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/reference/tools/gradle-api" track-type="nav" track-metadata-eventdetail="https://developer.android.com/reference/tools/gradle-api" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="tools and workflow" tooltip > <div class="devsite-nav-item-title"> Gradle plugin API </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column android-dropdown"> <ul class="devsite-tabs-dropdown-section android-dropdown-section-icon android-dropdown-section-icon-multiple-screens"> <li class="devsite-nav-title" role="heading" tooltip>Device tech</li> <li class="devsite-nav-description">Write code for form factors. Connect devices and share data.</li> <li class="devsite-nav-item"> <a href="https://developer.android.com/guide/topics/large-screens/get-started-with-large-screens" track-type="nav" track-metadata-eventdetail="https://developer.android.com/guide/topics/large-screens/get-started-with-large-screens" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="device tech" tooltip > <div class="devsite-nav-item-title"> Large screens (e.g., tablets) </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/training/wearables" track-type="nav" track-metadata-eventdetail="https://developer.android.com/training/wearables" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="device tech" tooltip > <div class="devsite-nav-item-title"> Wear OS </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/health-and-fitness/guides" track-type="nav" track-metadata-eventdetail="https://developer.android.com/health-and-fitness/guides" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="device tech" tooltip > <div class="devsite-nav-item-title"> Android Health </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/guide/topics/connectivity/cross-device-sdk/overview" track-type="nav" track-metadata-eventdetail="https://developer.android.com/guide/topics/connectivity/cross-device-sdk/overview" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="device tech" tooltip > <div class="devsite-nav-item-title"> Cross-device SDK </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/training/cars" track-type="nav" track-metadata-eventdetail="https://developer.android.com/training/cars" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="device tech" tooltip > <div class="devsite-nav-item-title"> Android for Cars </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/training/tv" track-type="nav" track-metadata-eventdetail="https://developer.android.com/training/tv" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="device tech" tooltip > <div class="devsite-nav-item-title"> Android TV </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/chrome-os/intro" track-type="nav" track-metadata-eventdetail="https://developer.android.com/chrome-os/intro" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="device tech" tooltip > <div class="devsite-nav-item-title"> ChromeOS </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column android-dropdown"> <ul class="devsite-tabs-dropdown-section android-dropdown-section-icon android-dropdown-section-icon-core-library"> <li class="devsite-nav-title" role="heading" tooltip>Libraries</li> <li class="devsite-nav-description">Browse API reference documentation with all the details.</li> <li class="devsite-nav-item"> <a href="https://developer.android.com/reference/packages" track-type="nav" track-metadata-eventdetail="https://developer.android.com/reference/packages" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="libraries" tooltip > <div class="devsite-nav-item-title"> Android platform </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/jetpack/androidx/explorer" track-type="nav" track-metadata-eventdetail="https://developer.android.com/jetpack/androidx/explorer" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="libraries" tooltip > <div class="devsite-nav-item-title"> Jetpack libraries </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/jetpack/androidx/releases/compose" track-type="nav" track-metadata-eventdetail="https://developer.android.com/jetpack/androidx/releases/compose" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="libraries" tooltip > <div class="devsite-nav-item-title"> Compose libraries </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/android/reference/packages" track-type="nav" track-metadata-eventdetail="https://developers.google.com/android/reference/packages" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="libraries" tooltip > <div class="devsite-nav-item-title"> Google Play services ↗️ </div> </a> </li> <li class="devsite-nav-item"> <a href="https://play.google.com/sdks" track-type="nav" track-metadata-eventdetail="https://play.google.com/sdks" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="libraries" tooltip > <div class="devsite-nav-item-title"> Google Play SDK index ↗️ </div> </a> </li> </ul> </div> </div> </div> </tab> <tab > <a href="https://developer.android.com/distribute" track-metadata-eventdetail="https://developer.android.com/distribute" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - google play" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Google Play" track-name="google play" > Google Play </a> </tab> <tab > <a href="https://developer.android.com/community" track-metadata-eventdetail="https://developer.android.com/community" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - community" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Community" track-name="community" > Community </a> </tab> </nav> </devsite-tabs> </div> <devsite-search enable-signin enable-search enable-suggestions enable-query-completion project-name="Jetpack" tenant-name="Android Developers" > <form class="devsite-search-form" action="https://developer.android.com/s/results" method="GET"> <div class="devsite-search-container"> <button type="button" search-open class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Open search"></button> <div class="devsite-searchbox"> <input aria-activedescendant="" aria-autocomplete="list" aria-label="Search" aria-expanded="false" aria-haspopup="listbox" autocomplete="off" class="devsite-search-field devsite-search-query" name="q" placeholder="Search" role="combobox" type="text" value="" > <div class="devsite-search-image material-icons" aria-hidden="true"> </div> <div class="devsite-search-shortcut-icon-container" aria-hidden="true"> <kbd class="devsite-search-shortcut-icon">/</kbd> </div> </div> </div> </form> <button type="button" search-close class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Close search"></button> </devsite-search> </div> <devsite-appearance-selector></devsite-appearance-selector> <devsite-language-selector> <ul role="presentation"> <li role="presentation"> <a role="menuitem" lang="en" >English</a> </li> <li role="presentation"> <a role="menuitem" lang="de" >Deutsch</a> </li> <li role="presentation"> <a role="menuitem" lang="es_419" >Español – América Latina</a> </li> <li role="presentation"> <a role="menuitem" lang="fr" >Français</a> </li> <li role="presentation"> <a role="menuitem" lang="id" >Indonesia</a> </li> <li role="presentation"> <a role="menuitem" lang="it" >Italiano</a> </li> <li role="presentation"> <a role="menuitem" lang="pl" >Polski</a> </li> <li role="presentation"> <a role="menuitem" lang="pt_br" >Português – Brasil</a> </li> <li role="presentation"> <a role="menuitem" lang="vi" >Tiếng Việt</a> </li> <li role="presentation"> <a role="menuitem" lang="tr" >Türkçe</a> </li> <li role="presentation"> <a role="menuitem" lang="ru" >Русский</a> </li> <li role="presentation"> <a role="menuitem" lang="he" >עברית</a> </li> <li role="presentation"> <a role="menuitem" lang="ar" >العربيّة</a> </li> <li role="presentation"> <a role="menuitem" lang="fa" >فارسی</a> </li> <li role="presentation"> <a role="menuitem" lang="hi" >हिंदी</a> </li> <li role="presentation"> <a role="menuitem" lang="bn" >বাংলা</a> </li> <li role="presentation"> <a role="menuitem" lang="th" >ภาษาไทย</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_cn" >中文 – 简体</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_tw" >中文 – 繁體</a> </li> <li role="presentation"> <a role="menuitem" lang="ja" >日本語</a> </li> <li role="presentation"> <a role="menuitem" lang="ko" >한국어</a> </li> </ul> </devsite-language-selector> <a class="devsite-header-link devsite-top-button button gc-analytics-event" href="https://developer.android.com/studio" data-category="Site-Wide Custom Events" data-label="Site header link" > Android Studio </a> <devsite-user enable-profiles id="devsite-user"> <span class="button devsite-top-button" aria-hidden="true" visually-hidden>Sign in</span> </devsite-user> </div> </div> </div> <div class="devsite-collapsible-section "> <div class="devsite-header-background"> <div class="devsite-product-id-row" > <div class="devsite-product-description-row"> <ul class="devsite-breadcrumb-list" aria-label="Lower header breadcrumb"> <li class="devsite-breadcrumb-item "> <a href="https://developer.android.com/get-started/overview" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Lower Header" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="Get started" > Get started </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://developer.android.com/jetpack" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Lower Header" data-value="2" track-type="globalNav" track-name="breadcrumb" track-metadata-position="2" track-metadata-eventdetail="Jetpack" > Jetpack </a> </li> </ul> </div> </div> <div class="devsite-doc-set-nav-row"> <devsite-tabs class="lower-tabs"> <nav class="devsite-tabs-wrapper" aria-label="Lower tabs"> <tab > <a href="https://developer.android.com/jetpack" track-metadata-eventdetail="https://developer.android.com/jetpack" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - overview" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Overview" track-name="overview" > Overview </a> </tab> <tab > <a href="https://developer.android.com/jetpack/getting-started" track-metadata-eventdetail="https://developer.android.com/jetpack/getting-started" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - guides" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Guides" track-name="guides" > Guides </a> </tab> <tab > <a href="https://developer.android.com/jetpack/samples" track-metadata-eventdetail="https://developer.android.com/jetpack/samples" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - samples" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Samples" track-name="samples" > Samples </a> </tab> <tab class="devsite-active"> <a href="https://developer.android.com/jetpack/androidx/explorer" track-metadata-eventdetail="https://developer.android.com/jetpack/androidx/explorer" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - libraries" track-metadata-module="primary nav" aria-label="Libraries, selected" data-category="Site-Wide Custom Events" data-label="Tab: Libraries" track-name="libraries" > Libraries </a> </tab> </nav> </devsite-tabs> </div> </div> </div> </div> </devsite-header> <devsite-book-nav scrollbars > <div class="devsite-book-nav-filter" > <span class="filter-list-icon material-icons" aria-hidden="true"></span> <input type="text" placeholder="Filter" aria-label="Type to filter" role="searchbox"> <span class="filter-clear-button hidden" data-title="Clear filter" aria-label="Clear filter" role="button" tabindex="0"></span> </div> <nav class="devsite-book-nav devsite-nav nocontent" aria-label="Side menu"> <div class="devsite-mobile-header"> <button type="button" id="devsite-close-nav" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Close navigation" aria-label="Close navigation"> </button> <div class="devsite-product-name-wrapper"> <a href="/" class="devsite-site-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Site logo" track-type="globalNav" track-name="androidDevelopers" track-metadata-position="nav" track-metadata-eventDetail="nav"> <picture> <source srcset="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/android/images/lockup-dark-theme.svg" media="(prefers-color-scheme: dark)" class="devsite-dark-theme" alt="Android Developers"> <img src="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/android/images/lockup.svg" class="devsite-site-logo" alt="Android Developers"> </picture> </a> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item "> </li> </ul> </span> </div> </div> <div class="devsite-book-nav-wrapper"> <div class="devsite-mobile-nav-top"> <ul class="devsite-nav-list"> <li class="devsite-nav-item"> <a href="/jetpack" class="devsite-nav-title gc-analytics-event devsite-nav-active" data-category="Site-Wide Custom Events" data-label="Tab: Essentials" track-name="essentials" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Essentials" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Essentials </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu "> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: Essentials" track-name="essentials" > <span class="devsite-nav-text" tooltip menu="Essentials"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Essentials"> </span> </span> </li> </ul> <ul class="devsite-nav-responsive-tabs"> <li class="devsite-nav-item"> <a href="/jetpack" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Overview" track-name="overview" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Overview" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Overview </span> </a> </li> <li class="devsite-nav-item"> <a href="/jetpack/getting-started" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: Guides" track-name="guides" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Guides" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Guides </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </li> <li class="devsite-nav-item"> <a href="/jetpack/samples" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Samples" track-name="samples" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Samples" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Samples </span> </a> </li> <li class="devsite-nav-item"> <a href="/jetpack/androidx/explorer" class="devsite-nav-title gc-analytics-event devsite-nav-has-children devsite-nav-active" data-category="Site-Wide Custom Events" data-label="Tab: Libraries" track-name="libraries" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Libraries" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip menu="_book"> Libraries </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="_book"> </span> </a> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/design" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Design & Plan" track-name="design & plan" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Design & Plan" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Design & Plan </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu "> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: Design & Plan" track-name="design & plan" > <span class="devsite-nav-text" tooltip menu="Design & Plan"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Design & Plan"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/develop" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Develop" track-name="develop" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Develop" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Develop </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu "> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: Develop" track-name="develop" > <span class="devsite-nav-text" tooltip menu="Develop"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Develop"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/distribute" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Google Play" track-name="google play" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google Play" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Google Play </span> </a> </li> <li class="devsite-nav-item"> <a href="/community" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Community" track-name="community" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Community" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Community </span> </a> </li> <li class="devsite-nav-item"> <a href="/studio" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Android Studio" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Android Studio </span> </a> </li> </ul> </div> <div class="devsite-mobile-nav-bottom"> <ul class="devsite-nav-list" menu="_book"> <li class="devsite-nav-item"><a href="/jetpack/androidx/explorer" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/explorer" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/explorer" ><span class="devsite-nav-text" tooltip>Explore the libraries</span></a></li> <li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Library Releases</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/jetpack/androidx/versions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/versions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/versions" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/versions/all-channel" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/versions/all-channel" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/versions/all-channel" ><span class="devsite-nav-text" tooltip>All Channels</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/versions/stable-channel" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/versions/stable-channel" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/versions/stable-channel" ><span class="devsite-nav-text" tooltip>Stable Channel</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/versions/rc-channel" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/versions/rc-channel" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/versions/rc-channel" ><span class="devsite-nav-text" tooltip>RC Channel</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/versions/beta-channel" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/versions/beta-channel" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/versions/beta-channel" ><span class="devsite-nav-text" tooltip>Beta Channel</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/versions/alpha-channel" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/versions/alpha-channel" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/versions/alpha-channel" ><span class="devsite-nav-text" tooltip>Alpha Channel</span></a></li></ul></div></li> <li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Release Notes</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/activity" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/activity" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/activity" ><span class="devsite-nav-text" tooltip>androidx.activity</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/ads" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/ads" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/ads" ><span class="devsite-nav-text" tooltip>androidx.ads</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/annotation" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/annotation" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/annotation" ><span class="devsite-nav-text" tooltip>androidx.annotation</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/appcompat" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/appcompat" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/appcompat" ><span class="devsite-nav-text" tooltip>androidx.appcompat</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/appsearch" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/appsearch" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/appsearch" ><span class="devsite-nav-text" tooltip>androidx.appsearch</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/arch-core" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/arch-core" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/arch-core" ><span class="devsite-nav-text" tooltip>androidx.arch.core</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/asynclayoutinflater" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/asynclayoutinflater" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/asynclayoutinflater" ><span class="devsite-nav-text" tooltip>androidx.asynclayoutinflater</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/autofill" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/autofill" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/autofill" ><span class="devsite-nav-text" tooltip>androidx.autofill</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/benchmark" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/benchmark" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/benchmark" ><span class="devsite-nav-text" tooltip>androidx.benchmark</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/biometric" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/biometric" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/biometric" ><span class="devsite-nav-text" tooltip>androidx.biometric</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/bluetooth" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/bluetooth" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/bluetooth" ><span class="devsite-nav-text" tooltip>androidx.bluetooth</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/browser" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/browser" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/browser" ><span class="devsite-nav-text" tooltip>androidx.browser</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/camera" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/camera" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/camera" ><span class="devsite-nav-text" tooltip>androidx.camera</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/camera-viewfinder" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/camera-viewfinder" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/camera-viewfinder" ><span class="devsite-nav-text" tooltip>androidx.camera.viewfinder</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/car" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/car" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/car" ><span class="devsite-nav-text" tooltip>androidx.car</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/car-app" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/car-app" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/car-app" ><span class="devsite-nav-text" tooltip>androidx.car.app</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/cardview" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/cardview" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/cardview" ><span class="devsite-nav-text" tooltip>androidx.cardview</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/collection" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/collection" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/collection" ><span class="devsite-nav-text" tooltip>androidx.collection</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/compose" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/compose" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/compose" ><span class="devsite-nav-text" tooltip>androidx.compose</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/compose-animation" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/compose-animation" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/compose-animation" ><span class="devsite-nav-text" tooltip>androidx.compose.animation</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/compose-compiler" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/compose-compiler" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/compose-compiler" ><span class="devsite-nav-text" tooltip>androidx.compose.compiler</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/compose-foundation" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/compose-foundation" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/compose-foundation" ><span class="devsite-nav-text" tooltip>androidx.compose.foundation</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/compose-material" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/compose-material" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/compose-material" ><span class="devsite-nav-text" tooltip>androidx.compose.material</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/compose-material3" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/compose-material3" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/compose-material3" ><span class="devsite-nav-text" tooltip>androidx.compose.material3</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/compose-material3-adaptive" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/compose-material3-adaptive" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/compose-material3-adaptive" ><span class="devsite-nav-text" tooltip>androidx.compose.material3.adaptive</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/compose-runtime" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/compose-runtime" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/compose-runtime" ><span class="devsite-nav-text" tooltip>androidx.compose.runtime</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/compose-ui" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/compose-ui" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/compose-ui" ><span class="devsite-nav-text" tooltip>androidx.compose.ui</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/concurrent" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/concurrent" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/concurrent" ><span class="devsite-nav-text" tooltip>androidx.concurrent</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/constraintlayout" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/constraintlayout" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/constraintlayout" ><span class="devsite-nav-text" tooltip>androidx.constraintlayout</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/contentpager" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/contentpager" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/contentpager" ><span class="devsite-nav-text" tooltip>androidx.contentpager</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/coordinatorlayout" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/coordinatorlayout" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/coordinatorlayout" ><span class="devsite-nav-text" tooltip>androidx.coordinatorlayout</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/core" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/core" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/core" ><span class="devsite-nav-text" tooltip>androidx.core</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/core-uwb" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/core-uwb" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/core-uwb" ><span class="devsite-nav-text" tooltip>androidx.core.uwb</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/credentials" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/credentials" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/credentials" ><span class="devsite-nav-text" tooltip>androidx.credentials</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/credentials/registry" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/credentials/registry" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/credentials/registry" ><span class="devsite-nav-text" tooltip>androidx.credentials.registry</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/cursoradapter" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/cursoradapter" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/cursoradapter" ><span class="devsite-nav-text" tooltip>androidx.cursoradapter</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/customview" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/customview" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/customview" ><span class="devsite-nav-text" tooltip>androidx.customview</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/databinding" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/databinding" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/databinding" ><span class="devsite-nav-text" tooltip>androidx.databinding</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/datastore" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/datastore" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/datastore" ><span class="devsite-nav-text" tooltip>androidx.datastore</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/documentfile" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/documentfile" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/documentfile" ><span class="devsite-nav-text" tooltip>androidx.documentfile</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/draganddrop" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/draganddrop" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/draganddrop" ><span class="devsite-nav-text" tooltip>androidx.draganddrop</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/drawerlayout" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/drawerlayout" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/drawerlayout" ><span class="devsite-nav-text" tooltip>androidx.drawerlayout</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/dynamicanimation" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/dynamicanimation" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/dynamicanimation" ><span class="devsite-nav-text" tooltip>androidx.dynamicanimation</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/emoji" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/emoji" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/emoji" ><span class="devsite-nav-text" tooltip>androidx.emoji</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/emoji2" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/emoji2" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/emoji2" ><span class="devsite-nav-text" tooltip>androidx.emoji2</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/enterprise" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/enterprise" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/enterprise" ><span class="devsite-nav-text" tooltip>androidx.enterprise</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/exifinterface" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/exifinterface" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/exifinterface" ><span class="devsite-nav-text" tooltip>androidx.exifinterface</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/fragment" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/fragment" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/fragment" ><span class="devsite-nav-text" tooltip>androidx.fragment</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/games" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/games" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/games" ><span class="devsite-nav-text" tooltip>androidx.games</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/glance" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/glance" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/glance" ><span class="devsite-nav-text" tooltip>androidx.glance</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/graphics" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/graphics" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/graphics" ><span class="devsite-nav-text" tooltip>androidx.graphics</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/gridlayout" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/gridlayout" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/gridlayout" ><span class="devsite-nav-text" tooltip>androidx.gridlayout</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/health" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/health" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/health" ><span class="devsite-nav-text" tooltip>androidx.health</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/health-connect" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/health-connect" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/health-connect" ><span class="devsite-nav-text" tooltip>androidx.health.connect</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/heifwriter" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/heifwriter" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/heifwriter" ><span class="devsite-nav-text" tooltip>androidx.heifwriter</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/hilt" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/hilt" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/hilt" ><span class="devsite-nav-text" tooltip>androidx.hilt</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/ink" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/ink" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/ink" ><span class="devsite-nav-text" tooltip>androidx.ink</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/input" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/input" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/input" ><span class="devsite-nav-text" tooltip>androidx.input</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/interpolator" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/interpolator" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/interpolator" ><span class="devsite-nav-text" tooltip>androidx.interpolator</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/javascriptengine" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/javascriptengine" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/javascriptengine" ><span class="devsite-nav-text" tooltip>androidx.javascriptengine</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/leanback" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/leanback" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/leanback" ><span class="devsite-nav-text" tooltip>androidx.leanback</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/legacy" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/legacy" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/legacy" ><span class="devsite-nav-text" tooltip>androidx.legacy</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/lifecycle" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/lifecycle" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/lifecycle" ><span class="devsite-nav-text" tooltip>androidx.lifecycle</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/lint" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/lint" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/lint" ><span class="devsite-nav-text" tooltip>androidx.lint</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/loader" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/loader" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/loader" ><span class="devsite-nav-text" tooltip>androidx.loader</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/localbroadcastmanager" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/localbroadcastmanager" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/localbroadcastmanager" ><span class="devsite-nav-text" tooltip>androidx.localbroadcastmanager</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/media" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/media" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/media" ><span class="devsite-nav-text" tooltip>androidx.media</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/media2" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/media2" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/media2" ><span class="devsite-nav-text" tooltip>androidx.media2</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/media3" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/media3" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/media3" ><span class="devsite-nav-text" tooltip>androidx.media3</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/mediarouter" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/mediarouter" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/mediarouter" ><span class="devsite-nav-text" tooltip>androidx.mediarouter</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/multidex" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/multidex" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/multidex" ><span class="devsite-nav-text" tooltip>androidx.multidex</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/metrics" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/metrics" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/metrics" ><span class="devsite-nav-text" tooltip>androidx.metrics</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/navigation" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/navigation" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/navigation" ><span class="devsite-nav-text" tooltip>androidx.navigation</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/paging" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/paging" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/paging" ><span class="devsite-nav-text" tooltip>androidx.paging</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/palette" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/palette" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/palette" ><span class="devsite-nav-text" tooltip>androidx.palette</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/pdf" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/pdf" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/pdf" ><span class="devsite-nav-text" tooltip>androidx.pdf</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/percentlayout" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/percentlayout" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/percentlayout" ><span class="devsite-nav-text" tooltip>androidx.percentlayout</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/preference" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/preference" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/preference" ><span class="devsite-nav-text" tooltip>androidx.preference</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/print" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/print" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/print" ><span class="devsite-nav-text" tooltip>androidx.print</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/privacysandbox-activity" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/privacysandbox-activity" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/privacysandbox-activity" ><span class="devsite-nav-text" tooltip>androidx.privacysandbox.activity</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/privacysandbox-ads" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/privacysandbox-ads" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/privacysandbox-ads" ><span class="devsite-nav-text" tooltip>androidx.privacysandbox.ads</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/privacysandbox-plugins" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/privacysandbox-plugins" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/privacysandbox-plugins" ><span class="devsite-nav-text" tooltip>androidx.privacysandbox.plugins</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/privacysandbox-sdkruntime" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/privacysandbox-sdkruntime" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/privacysandbox-sdkruntime" ><span class="devsite-nav-text" tooltip>androidx.privacysandbox.sdkruntime</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/privacysandbox-tools" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/privacysandbox-tools" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/privacysandbox-tools" ><span class="devsite-nav-text" tooltip>androidx.privacysandbox.tools</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/privacysandbox-ui" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/privacysandbox-ui" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/privacysandbox-ui" ><span class="devsite-nav-text" tooltip>androidx.privacysandbox.ui</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/profileinstaller" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/profileinstaller" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/profileinstaller" ><span class="devsite-nav-text" tooltip>androidx.profileinstaller</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/recommendation" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/recommendation" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/recommendation" ><span class="devsite-nav-text" tooltip>androidx.recommendation</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/recyclerview" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/recyclerview" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/recyclerview" ><span class="devsite-nav-text" tooltip>androidx.recyclerview</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/remotecallback" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/remotecallback" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/remotecallback" ><span class="devsite-nav-text" tooltip>androidx.remotecallback</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/resourceinspection" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/resourceinspection" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/resourceinspection" ><span class="devsite-nav-text" tooltip>androidx.resourceinspection</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/room" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/room" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/room" ><span class="devsite-nav-text" tooltip>androidx.room</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/savedstate" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/savedstate" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/savedstate" ><span class="devsite-nav-text" tooltip>androidx.savedstate</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/security" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/security" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/security" ><span class="devsite-nav-text" tooltip>androidx.security</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/sharetarget" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/sharetarget" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/sharetarget" ><span class="devsite-nav-text" tooltip>androidx.sharetarget</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/slice" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/slice" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/slice" ><span class="devsite-nav-text" tooltip>androidx.slice</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/slidingpanelayout" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/slidingpanelayout" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/slidingpanelayout" ><span class="devsite-nav-text" tooltip>androidx.slidingpanelayout</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/sqlite" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/sqlite" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/sqlite" ><span class="devsite-nav-text" tooltip>androidx.sqlite</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/startup" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/startup" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/startup" ><span class="devsite-nav-text" tooltip>androidx.startup</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/swiperefreshlayout" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/swiperefreshlayout" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/swiperefreshlayout" ><span class="devsite-nav-text" tooltip>androidx.swiperefreshlayout</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/test" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/test" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/test" ><span class="devsite-nav-text" tooltip>androidx.test</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/test-uiautomator" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/test-uiautomator" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/test-uiautomator" ><span class="devsite-nav-text" tooltip>androidx.test.uiautomator</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/textclassifier" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/textclassifier" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/textclassifier" ><span class="devsite-nav-text" tooltip>androidx.textclassifier</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/tracing" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/tracing" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/tracing" ><span class="devsite-nav-text" tooltip>androidx.tracing</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/transition" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/transition" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/transition" ><span class="devsite-nav-text" tooltip>androidx.transition</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/tv" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/tv" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/tv" ><span class="devsite-nav-text" tooltip>androidx.tv</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/tvprovider" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/tvprovider" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/tvprovider" ><span class="devsite-nav-text" tooltip>androidx.tvprovider</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/vectordrawable" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/vectordrawable" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/vectordrawable" ><span class="devsite-nav-text" tooltip>androidx.vectordrawable</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/versionedparcelable" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/versionedparcelable" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/versionedparcelable" ><span class="devsite-nav-text" tooltip>androidx.versionedparcelable</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/viewpager" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/viewpager" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/viewpager" ><span class="devsite-nav-text" tooltip>androidx.viewpager</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/viewpager2" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/viewpager2" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/viewpager2" ><span class="devsite-nav-text" tooltip>androidx.viewpager2</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/wear" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/wear" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/wear" ><span class="devsite-nav-text" tooltip>androidx.wear</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/wear-compose" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/wear-compose" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/wear-compose" ><span class="devsite-nav-text" tooltip>androidx.wear.compose</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/wear-protolayout" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/wear-protolayout" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/wear-protolayout" ><span class="devsite-nav-text" tooltip>androidx.wear.protolayout</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/wear-tiles" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/wear-tiles" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/wear-tiles" ><span class="devsite-nav-text" tooltip>androidx.wear.tiles</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/wear-watchface" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/wear-watchface" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/wear-watchface" ><span class="devsite-nav-text" tooltip>androidx.wear.watchface</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/webkit" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/webkit" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/webkit" ><span class="devsite-nav-text" tooltip>androidx.webkit</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/window" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/window" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/window" ><span class="devsite-nav-text" tooltip>androidx.window</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/window-extensions-core" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/window-extensions-core" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/window-extensions-core" ><span class="devsite-nav-text" tooltip>androidx.window.extensions.core</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/work" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/work" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/work" ><span class="devsite-nav-text" tooltip>androidx.work</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/jetifier" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/jetifier" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/jetifier" ><span class="devsite-nav-text" tooltip>tools.build.jetifier</span></a></li></ul></div></li> <li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Release Note Archive</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/archive" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/archive" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/archive" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/archive/test" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/archive/test" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/archive/test" ><span class="devsite-nav-text" tooltip>Test</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/archive/arch" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/archive/arch" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/archive/arch" ><span class="devsite-nav-text" tooltip>Architecture Components</span></a></li><li class="devsite-nav-item"><a href="/jetpack/androidx/releases/archive/androidx" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/archive/androidx" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/archive/androidx" ><span class="devsite-nav-text" tooltip>AndroidX</span></a></li></ul></div></li> <li class="devsite-nav-item"><a href="/jetpack/androidx/compose-roadmap" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/compose-roadmap" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/compose-roadmap" ><span class="devsite-nav-text" tooltip>Jetpack Compose Roadmap</span></a></li> <li class="devsite-nav-item"><a href="/jetpack/androidx/releases/compose-kotlin" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /jetpack/androidx/releases/compose-kotlin" track-type="bookNav" track-name="click" track-metadata-eventdetail="/jetpack/androidx/releases/compose-kotlin" ><span class="devsite-nav-text" tooltip>Jetpack Compose Kotlin Compatibility</span></a></li> </ul> <ul class="devsite-nav-list" menu="Essentials" aria-label="Side menu" hidden> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Gemini in Android Studio </span> </span> </li> <li class="devsite-nav-item"> <a href="/gemini-in-android" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Learn more" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Learn more </span> </a> </li> <li class="devsite-nav-item"> <a href="/studio" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Get Android Studio" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Get Android Studio </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Get started </span> </span> </li> <li class="devsite-nav-item"> <a href="/get-started/overview" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Hello world" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Hello world </span> </a> </li> <li class="devsite-nav-item"> <a href="/courses" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Training courses" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Training courses </span> </a> </li> <li class="devsite-nav-item"> <a href="/get-started/codelabs" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Tutorials" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Tutorials </span> </a> </li> <li class="devsite-nav-item"> <a href="/kotlin" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Kotlin for Android" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Kotlin for Android </span> </a> </li> <li class="devsite-nav-item"> <a href="https://play.google.com/console/about/guides/monetize/" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Monetization with Play ↗️" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Monetization with Play ↗️ </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Extend by device </span> </span> </li> <li class="devsite-nav-item"> <a href="/adaptive-apps" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Adaptive apps" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Adaptive apps </span> </a> </li> <li class="devsite-nav-item"> <a href="/wear" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Wear OS" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Wear OS </span> </a> </li> <li class="devsite-nav-item"> <a href="/cars" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Android for Cars" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Android for Cars </span> </a> </li> <li class="devsite-nav-item"> <a href="/tv" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Android TV" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Android TV </span> </a> </li> <li class="devsite-nav-item"> <a href="/chrome-os" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: ChromeOS" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > ChromeOS </span> </a> </li> <li class="devsite-nav-item"> <a href="/multi-device-development" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Cross-device SDK" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Cross-device SDK </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Build by category </span> </span> </li> <li class="devsite-nav-item"> <a href="/games" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Games" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Games </span> </a> </li> <li class="devsite-nav-item"> <a href="/media" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Camera & Media" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Camera & Media </span> </a> </li> <li class="devsite-nav-item"> <a href="/social-and-messaging" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Social & messaging" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Social & messaging </span> </a> </li> <li class="devsite-nav-item"> <a href="/health-and-fitness" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Health & Fitness" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Health & Fitness </span> </a> </li> <li class="devsite-nav-item"> <a href="/productivity" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Productivity" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Productivity </span> </a> </li> <li class="devsite-nav-item"> <a href="/work/overview" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Enterprise apps" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Enterprise apps </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Get the latest </span> </span> </li> <li class="devsite-nav-item"> <a href="/latest-updates" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Latest updates" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Latest updates </span> </a> </li> <li class="devsite-nav-item"> <a href="/latest-updates/experimental" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Experimental updates" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Experimental updates </span> </a> </li> <li class="devsite-nav-item"> <a href="/studio/preview" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Android Studio preview" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Android Studio preview </span> </a> </li> <li class="devsite-nav-item"> <a href="/jetpack/androidx/versions" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Jetpack & Compose libraries" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Jetpack & Compose libraries </span> </a> </li> <li class="devsite-nav-item"> <a href="/training/wearables/versions/4" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Wear OS preview" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Wear OS preview </span> </a> </li> <li class="devsite-nav-item"> <a href="/design-for-safety/privacy-sandbox" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Privacy Sandbox" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Privacy Sandbox </span> </a> </li> </ul> <ul class="devsite-nav-list" menu="Design & Plan" aria-label="Side menu" hidden> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > UI Design </span> </span> </li> <li class="devsite-nav-item"> <a href="/design/ui" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Design for Android" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Design for Android </span> </a> </li> <li class="devsite-nav-item"> <a href="/design/ui/mobile" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Mobile" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Mobile </span> </a> </li> <li class="devsite-nav-item"> <a href="/design/ui/large-screens" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Large screens (e.g., tablets)" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Large screens (e.g., tablets) </span> </a> </li> <li class="devsite-nav-item"> <a href="/design/ui/widget" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Widgets" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Widgets </span> </a> </li> <li class="devsite-nav-item"> <a href="/design/ui/wear" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Wear OS" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Wear OS </span> </a> </li> <li class="devsite-nav-item"> <a href="/design/ui/tv" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Android TV" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Android TV </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Architecture </span> </span> </li> <li class="devsite-nav-item"> <a href="/topic/architecture/intro" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Introduction" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Introduction </span> </a> </li> <li class="devsite-nav-item"> <a href="/topic/libraries/view-binding" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Libraries" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Libraries </span> </a> </li> <li class="devsite-nav-item"> <a href="/guide/navigation/navigation-principles" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Navigation" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Navigation </span> </a> </li> <li class="devsite-nav-item"> <a href="/topic/modularization" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Modularization" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Modularization </span> </a> </li> <li class="devsite-nav-item"> <a href="/training/testing/fundamentals" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Testing" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Testing </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Quality </span> </span> </li> <li class="devsite-nav-item"> <a href="/quality" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Overview" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Overview </span> </a> </li> <li class="devsite-nav-item"> <a href="/quality/core-value" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Core value" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Core value </span> </a> </li> <li class="devsite-nav-item"> <a href="/quality/user-experience" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: User experience" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > User experience </span> </a> </li> <li class="devsite-nav-item"> <a href="/quality/technical" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Technical quality" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Technical quality </span> </a> </li> <li class="devsite-nav-item"> <a href="/quality/privacy-and-security" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Security" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Security </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Security </span> </span> </li> <li class="devsite-nav-item"> <a href="/security" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Overview" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Overview </span> </a> </li> <li class="devsite-nav-item"> <a href="/privacy-and-security/about" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Privacy" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Privacy </span> </a> </li> <li class="devsite-nav-item"> <a href="/identity" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Identity" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Identity </span> </a> </li> <li class="devsite-nav-item"> <a href="/security/fraud-prevention" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Fraud prevention" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Fraud prevention </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Build for Billions </span> </span> </li> <li class="devsite-nav-item"> <a href="/build-for-billions" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Overview" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Overview </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/quality-guidelines/build-for-billions" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: About new markets" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > About new markets </span> </a> </li> <li class="devsite-nav-item"> <a href="/guide/topics/androidgo" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Android (Go edition)" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Android (Go edition) </span> </a> </li> </ul> <ul class="devsite-nav-list" menu="Develop" aria-label="Side menu" hidden> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Build AI experiences </span> </span> </li> <li class="devsite-nav-item"> <a href="/ai" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Get started" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Get started </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Core areas </span> </span> </li> <li class="devsite-nav-item"> <a href="/samples" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Samples" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Samples </span> </a> </li> <li class="devsite-nav-item"> <a href="/quick-guides" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Try Quick Guidesᵇᵉᵗᵃ" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Try Quick Guidesᵇᵉᵗᵃ </span> </a> </li> <li class="devsite-nav-item"> <a href="/develop/ui" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: User interfaces" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > User interfaces </span> </a> </li> <li class="devsite-nav-item"> <a href="/guide/topics/permissions/overview" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Permissions" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Permissions </span> </a> </li> <li class="devsite-nav-item"> <a href="/develop/background-work" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Background work" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Background work </span> </a> </li> <li class="devsite-nav-item"> <a href="/guide/topics/data" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Data and files" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Data and files </span> </a> </li> <li class="devsite-nav-item"> <a href="/develop#core-areas" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: All core areas ⤵️" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > All core areas ⤵️ </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Tools and workflow </span> </span> </li> <li class="devsite-nav-item"> <a href="/studio/write" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Write and debug code" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Write and debug code </span> </a> </li> <li class="devsite-nav-item"> <a href="/build/gradle-build-overview" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Build projects" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Build projects </span> </a> </li> <li class="devsite-nav-item"> <a href="/training/testing" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Test your app" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Test your app </span> </a> </li> <li class="devsite-nav-item"> <a href="/topic/performance/overview" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Performance" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Performance </span> </a> </li> <li class="devsite-nav-item"> <a href="/tools" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Command-line tools" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Command-line tools </span> </a> </li> <li class="devsite-nav-item"> <a href="/reference/tools/gradle-api" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Gradle plugin API" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Gradle plugin API </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Device tech </span> </span> </li> <li class="devsite-nav-item"> <a href="/guide/topics/large-screens/get-started-with-large-screens" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Large screens (e.g., tablets)" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Large screens (e.g., tablets) </span> </a> </li> <li class="devsite-nav-item"> <a href="/training/wearables" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Wear OS" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Wear OS </span> </a> </li> <li class="devsite-nav-item"> <a href="/health-and-fitness/guides" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Android Health" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Android Health </span> </a> </li> <li class="devsite-nav-item"> <a href="/guide/topics/connectivity/cross-device-sdk/overview" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Cross-device SDK" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Cross-device SDK </span> </a> </li> <li class="devsite-nav-item"> <a href="/training/cars" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Android for Cars" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Android for Cars </span> </a> </li> <li class="devsite-nav-item"> <a href="/training/tv" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Android TV" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Android TV </span> </a> </li> <li class="devsite-nav-item"> <a href="/chrome-os/intro" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: ChromeOS" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > ChromeOS </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Libraries </span> </span> </li> <li class="devsite-nav-item"> <a href="/reference/packages" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Android platform" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Android platform </span> </a> </li> <li class="devsite-nav-item"> <a href="/jetpack/androidx/explorer" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Jetpack libraries" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Jetpack libraries </span> </a> </li> <li class="devsite-nav-item"> <a href="/jetpack/androidx/releases/compose" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Compose libraries" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Compose libraries </span> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/android/reference/packages" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google Play services ↗️" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Google Play services ↗️ </span> </a> </li> <li class="devsite-nav-item"> <a href="https://play.google.com/sdks" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google Play SDK index ↗️" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Google Play SDK index ↗️ </span> </a> </li> </ul> </div> </div> </nav> </devsite-book-nav> <section id="gc-wrapper"> <main role="main" class="devsite-main-content" has-book-nav has-sidebar > <div class="devsite-sidebar"> <div class="devsite-sidebar-content"> <devsite-toc class="devsite-nav" role="navigation" aria-label="On this page" depth="2" scrollbars ></devsite-toc> <devsite-recommendations-sidebar class="nocontent devsite-nav"> </devsite-recommendations-sidebar> </div> </div> <devsite-content> <article class="devsite-article"> <div class="devsite-article-meta nocontent" role="navigation"> <ul class="devsite-breadcrumb-list" aria-label="Breadcrumb"> <li class="devsite-breadcrumb-item "> <a href="https://developer.android.com/" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="Android Developers" > Android Developers </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://developer.android.com/get-started/overview" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="2" track-type="globalNav" track-name="breadcrumb" track-metadata-position="2" track-metadata-eventdetail="Get started" > Get started </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://developer.android.com/jetpack" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="3" track-type="globalNav" track-name="breadcrumb" track-metadata-position="3" track-metadata-eventdetail="Jetpack" > Jetpack </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://developer.android.com/jetpack/androidx/explorer" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="4" track-type="globalNav" track-name="breadcrumb" track-metadata-position="4" track-metadata-eventdetail="" > Libraries </a> </li> </ul> <devsite-thumb-rating position="header"> </devsite-thumb-rating> </div> <devsite-feature-tooltip ack-key="AckCollectionsBookmarkTooltipDismiss" analytics-category="Site-Wide Custom Events" analytics-action-show="Callout Profile displayed" analytics-action-close="Callout Profile dismissed" analytics-label="Create Collection Callout" class="devsite-page-bookmark-tooltip nocontent" dismiss-button="true" id="devsite-collections-dropdown" dismiss-button-text="Dismiss" close-button-text="Got it"> <devsite-bookmark></devsite-bookmark> <span slot="popout-heading"> Stay organized with collections </span> <span slot="popout-contents"> Save and categorize content based on your preferences. </span> </devsite-feature-tooltip> <devsite-toc class="devsite-nav" depth="2" devsite-toc-embedded > </devsite-toc> <devsite-recommendations-dropdown class="nocontent"></devsite-recommendations-dropdown> <div class="devsite-article-body clearfix devsite-no-page-title"> <h1 class="devsite-page-title" style="width:50%" id="compose-animation" data-text="Compose Animation" tabindex="-1">Compose Animation</h1> <div style="align:right; text-align:right; padding-bottom:21px; margin-top:-45px; border-bottom:1px solid black;"> <a href="/jetpack/compose/tutorial">User Guide</a> <a href="https://github.com/android/compose-samples">Code Sample</a> </div> <div style="float:left; font-size:medium; margin-bottom:5px; margin-top:10px" class="nocontent"> <div style="text-align:left; font-size:90%; padding-right:30px; margin-right:10px; margin-bottom:10px;"> API Reference<br> <a href="/reference/kotlin/androidx/compose/animation/package-summary">androidx.compose.animation</a><br> <a href="/reference/kotlin/androidx/compose/animation/core/package-summary">androidx.compose.animation.core</a><br> <a href="/reference/kotlin/androidx/compose/animation/graphics/res/package-summary">androidx.compose.animation.graphics</a><br> (<em>See the API reference docs for all compose packages</em>) </div> </div> <div style="text-align:left; padding-left:10px; margin-left:10px; margin-top:15px; margin-bottom:10px;"> Build animations in their Jetpack Compose applications to enrich the user experience. </div> <div style="clear:both"></div> <table style="width:100%"> <tr> <th style="width:15%">Latest Update</th> <th style="width:15%">Stable Release</th> <th style="width:15%">Release Candidate</th> <th style="width:15%">Beta Release</th> <th style="width:15%">Alpha Release</th></tr> <tr> <td>November 13, 2024</td> <td><a href="/jetpack/androidx/releases/compose-animation#1.7.5">1.7.5</a></td> <td>-</td> <td>-</td> <td><a href="/jetpack/androidx/releases/compose-animation#1.8.0-alpha06">1.8.0-alpha06</a></td> </tr> </table> <style> @keyframes animatedBackground { from { background-position: 0 0; } to { background-position: 100% 0; } } .devsite-toc .devsite-nav-title[href^="#ai-prompt__"]:after { align-items: center; background: url('/images/pen_spark_dt.svg') 50% 50%/16px 16px no-repeat, linear-gradient(0deg, rgba(0, 0, 0, 0.16) 0%, rgba(0, 0, 0, 0.16) 100%), linear-gradient(90deg, #2E64DE 7.04%, #3C8FE3 70.6%, #987BE9 108.91%, #BE6EAE 149.7%); border-radius: 8px; content: ''; display: inline-flex; height: 20px; margin: -4px 0 0 6px; padding: 2px 4px; width: 24px } .android-ai-prompt { animation: animatedBackground 20s linear infinite alternate; background-image: linear-gradient(90deg, #217BFE 0%, #2E96FF 26.08%, #AC87EB 48.91%, #2E96FF 74.99%, #217BFE 97.82%); background-position: 0 0; background-size: 200% 100%; border-radius: 24px; margin: 56px 0; padding: 20px 4px 4px; } .android-ai-prompt-inner { background-color: #fff; border-radius: 16px 16px 22px 22px; padding: 24px; } @media screen and (max-width: 600px) { .android-ai-prompt-inner { position: relative; } } .color-scheme--dark .android-ai-prompt-inner { background-color: #000; } .android-ai-prompt .android-ai-prompt-section-title { font-size: 18px; font-weight: 500; letter-spacing: 0; line-height: 28px; margin: 0 0 22px; } @media screen and (max-width: 600px) { .android-ai-prompt-section-title { font-size: 16px; line-height: 24px; margin: 0 0 16px; } } .android-ai-prompt .android-ai-prompt-section-title .material-icons { margin-right: 4px; vertical-align: text-bottom; } .android-ai-prompt-section-title-new-indicator { border-radius: 8px; border: 1px solid #174ea6; color: #174ea6; display: inline-block; font-size: 16px; line-height: 24px; margin-left: 8px; padding: 0 8px; } .color-scheme--dark .android-ai-prompt-section-title-new-indicator { border-color: #aecbfa; color: #aecbfa; } .android-ai-prompt-title { background-clip: text; background-image: linear-gradient(90deg, #2754ba 16%, #3278bf 51.5%, #8067c4 79.5%, #a05c92 95.41%); color: transparent; font-size: 24px; line-height: 32px; } .color-scheme--dark .android-ai-prompt-title { background-image: linear-gradient(90deg, #217bfe 0%, #2e96ff 52.16%, #ac87eb 97.82%) } .android-ai-prompt-buttons { align-items: center; display: flex; justify-content: space-between; } .android-ai-prompt-buttons .button { border: 1px solid #dadce0; } .android-ai-prompt-buttons .icon-button { padding: 0 11px; } .android-ai-prompt-buttons .icon-button .material-icons { font-size: 24px; height: 24px; width: 24px; } @media screen and (max-width: 600px) { .android-ai-prompt-help-button { position: absolute; right: 24px; top: 14px; width: auto; } } .android-ai-prompt-buttons .icon-button .material-icons { margin: 0; margin-inline-start: 0!important; } .android-ai-prompt-text { white-space: normal; } </style> <section class="android-ai-prompt"> <div class="android-ai-prompt-inner"> <header class="android-ai-prompt-header"> <div class="android-ai-prompt-header-text"> <h2 class="android-ai-prompt-section-title no-link" data-text="AI Prompt (New)" id="ai-prompt__Update-compose.animation-library-to-latest-version" tabindex="-1"><span class="material-icons" aria-hidden="true" translate="no">auto_awesome</span> AI Prompt <span class="android-ai-prompt-section-title-new-indicator">New</span></h2> <h3 class="android-ai-prompt-title" id="update-compose.animation-library-to-latest-version" data-text=" Update compose.animation library to latest version " tabindex="-1"> Update compose.animation library to latest version </h3> </div> </header> <p>The prompt asks to update the compose.animation library to its latest version, optionally providing guidance on necessary code adjustments.</p> <p>Run this prompt in Android Studio with your <strong>Version Catalog file</strong> open.</p> <div></div><devsite-code><pre data-copy-event-label="ai-prompt Update compose.animation library to latest version" class="devsite-click-to-copy" translate="no" dir="ltr" is-upgraded><code class="android-ai-prompt-text" translate="no" dir="ltr">Please update library compose.animation to the latest available version and inform me of any followup changes I need to make in my code.</code></pre></devsite-code> <div class="android-ai-prompt-buttons"> <div id="ai-prompt_help_modal__Update-compose.animation-library-to-latest-version" class="devsite-dialog"> <div class="devsite-dialog-contents"> <h3 class="hide-from-toc" id="using-ai-prompts" data-text="Using AI prompts" tabindex="-1">Using AI prompts</h3> <p>AI prompts are intended to be used within Gemini in Android Studio (latest Canary version required)</p> <p>Learn more about Gemini in Studio here: <a href="/studio/preview/gemini">https://developer.android.com/studio/preview/gemini</a></p> </div> <div class="devsite-dialog-buttons"> <button class="devsite-dialog-close">Close</button> </div> </div> <button class="button icon-button android-ai-prompt-help-button" data-modal-dialog-id="ai-prompt_help_modal__Update-compose.animation-library-to-latest-version"> <span class="material-icons" aria-hidden="true" translate="no">help_outline</span> </button> <button class="button google-feedback" data-p="5207477" data-b="llm-prompts" data-context="Update-compose.animation-library-to-latest-version"> <span class="material-icons" aria-hidden="true" translate="no">reviews</span> Share your thoughts </button> </div> </div> </section> <h2 id="structure" data-text="Structure" tabindex="-1">Structure</h2> <p>Compose is a combination of 7 Maven group IDs within <code translate="no" dir="ltr">androidx</code>. Each group contains a targeted subset of functionality, each with its own set of release notes.</p> <p>This table explains the groups and links to each set of release notes.</p> <table> <thead> <tr><th>Group</th><th>Description</th></tr> </thead> <tbody class="list"> <tr><td><a href="/jetpack/androidx/releases/compose-animation">compose.animation</a></td><td>Build animations in their Jetpack Compose applications to enrich the user experience.</td></tr> <tr><td><a href="/jetpack/androidx/releases/compose-compiler">compose.compiler</a></td><td>Transform @Composable functions and enable optimizations with a Kotlin compiler plugin.</td></tr> <tr><td><a href="/jetpack/androidx/releases/compose-foundation">compose.foundation</a></td><td>Write Jetpack Compose applications with ready to use building blocks and extend foundation to build your own design system pieces.</td></tr> <tr><td><a href="/jetpack/androidx/releases/compose-material">compose.material</a></td><td>Build Jetpack Compose UIs with ready to use Material Design Components. This is the higher level entry point of Compose, designed to provide components that match those described at www.material.io.</td></tr> <tr><td><a href="/jetpack/androidx/releases/compose-material3">compose.material3</a></td><td>Build Jetpack Compose UIs with Material Design 3 Components, the next evolution of Material Design. Material 3 includes updated theming and components and Material You personalization features like dynamic color, and is designed to be cohesive with the new Android 12 visual style and system UI.</td></tr> <tr><td><a href="/jetpack/androidx/releases/compose-runtime">compose.runtime</a></td><td>Fundamental building blocks of Compose's programming model and state management, and core runtime for the Compose Compiler Plugin to target.</td></tr> <tr><td><a href="/jetpack/androidx/releases/compose-ui">compose.ui</a></td><td>Fundamental components of compose UI needed to interact with the device, including layout, drawing, and input.</td></tr> </tbody> </table> <h2 id="declaring_dependencies" data-text="Declaring dependencies" tabindex="-1">Declaring dependencies</h2> <p>To add a dependency on Compose, you must add the Google Maven repository to your project. Read <a href="/studio/build/dependencies#google-maven">Google's Maven repository</a> for more information.</p> <p>Add the dependencies for the artifacts you need in the <code translate="no" dir="ltr">build.gradle</code> file for your app or module:</p> <div> <div class="ds-selector-tabs"><section><h3 id="groovy" data-text="Groovy" tabindex="-1">Groovy</h3> <div></div><devsite-code><pre class="devsite-click-to-copy" translate="no" dir="ltr" is-upgraded syntax="Groovy"><span class="devsite-syntax-n">dependencies</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-o">{</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">implementation</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-s2">"androidx.compose.animation:animation:1.7.5"</span> <span class="devsite-syntax-o">}</span> <span class="devsite-syntax-n">android</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-o">{</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">buildFeatures</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-o">{</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">compose</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-kc">true</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-o">}</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">composeOptions</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-o">{</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">kotlinCompilerExtensionVersion</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-o">=</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-s2">"1.5.15"</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-o">}</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">kotlinOptions</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-o">{</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">jvmTarget</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-o">=</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-s2">"1.8"</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-o">}</span> <span class="devsite-syntax-o">}</span></pre></devsite-code> </section><section><h3 id="kts" data-text="Kotlin" tabindex="-1">Kotlin</h3> <div></div><devsite-code><pre class="devsite-click-to-copy" translate="no" dir="ltr" is-upgraded syntax="Kotlin"><span class="devsite-syntax-n">dependencies</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-p">{</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">implementation</span><span class="devsite-syntax-p">(</span><span class="devsite-syntax-s">"androidx.compose.animation:animation:1.7.5"</span><span class="devsite-syntax-p">)</span> <span class="devsite-syntax-p">}</span> <span class="devsite-syntax-n">android</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-p">{</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">buildFeatures</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-p">{</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">compose</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-o">=</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-kc">true</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-p">}</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">composeOptions</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-p">{</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">kotlinCompilerExtensionVersion</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-o">=</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-s">"1.5.15"</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-p">}</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">kotlinOptions</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-p">{</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">jvmTarget</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-o">=</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-s">"1.8"</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-p">}</span> <span class="devsite-syntax-p">}</span></pre></devsite-code> </section></div> </div> <p>For more information about dependencies, see <a href="/studio/build/dependencies">Add build dependencies</a>.</p> <h2 id="feedback" data-text="Feedback" tabindex="-1">Feedback</h2> <p>Your feedback helps make Jetpack better. Let us know if you discover new issues or have ideas for improving this library. Please take a look at the <a href="https://issuetracker.google.com/issues?q=componentid:610478%20status:open">existing issues</a> in this library before you create a new one. You can add your vote to an existing issue by clicking the star button.</p> <p><a href="https://issuetracker.google.com/issues/new?component=610478&template=1265071" class="button dac-button dac-outline-button">Create a new issue</a></p> <p>See the <a href="https://developers.google.com/issue-tracker">Issue Tracker documentation</a> for more information.</p> <h2 id="version_18_2" data-text="Version 1.8" tabindex="-1">Version 1.8</h2> <h3 id="1.8.0-alpha06" data-text="Version 1.8.0-alpha06" tabindex="-1">Version 1.8.0-alpha06</h3> <p>November 13, 2024</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.8.0-alpha06</code> is released. Version 1.8.0-alpha06 contains <a href="https://android.googlesource.com/platform/frameworks/support/+log/ccd90a76bd7c4acf4f4f01eca76350e383bc441e..6f09cf2ae979e48fdb19485f757a033e4a34bb82/compose/animation">these commits</a>.</p> <p><strong>API Changes</strong></p> <ul> <li>Updated <code translate="no" dir="ltr">sharedElement</code> parameter naming from <code translate="no" dir="ltr">state</code> to <code translate="no" dir="ltr">sharedContentState</code> for consistency across shared element APIs. (<a href="https://android-review.googlesource.com/#/q/I5694cffa5df5527e1fcd12f9267d479fd175ee87">I5694c</a>, <a href="https://issuetracker.google.com/issues/375351468">b/375351468</a>)</li> <li><code translate="no" dir="ltr">AnimatedImageVector</code> suite of APIs are now stable. (<a href="https://android-review.googlesource.com/#/q/I7174b2b38481ddd55dc1550b0247b315dd7ce200">I7174b</a>, <a href="https://issuetracker.google.com/issues/261436267">b/261436267</a>)</li> </ul> <h3 id="1.8.0-alpha05" data-text="Version 1.8.0-alpha05" tabindex="-1">Version 1.8.0-alpha05</h3> <p>October 30, 2024</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.8.0-alpha05</code> is released. Version 1.8.0-alpha05 contains <a href="https://android.googlesource.com/platform/frameworks/support/+log/b8a68b0896897fa158508d73a31998a26161d9a7..ccd90a76bd7c4acf4f4f01eca76350e383bc441e/compose/animation">these commits</a>.</p> <p><strong>New Features</strong></p> <ul> <li>Lookahead is now supported in <code translate="no" dir="ltr">LazyGrid</code>. This includes differentiating lookahead pass versus approach pass in scrolling, item composition/disposal, and item animation, and uses lookahead pass for source of truth for scrolling, and item animation target.</li> </ul> <p><strong>Bug Fixes</strong></p> <ul> <li>Update internal states for <code translate="no" dir="ltr">AnimatedContent</code>’s size transform when transition is recreated. This ensures the target size information is always up to date. (<a href="https://issuetracker.google.com/372512085">b/372512085</a>)</li> </ul> <h3 id="1.8.0-alpha04" data-text="Version 1.8.0-alpha04" tabindex="-1">Version 1.8.0-alpha04</h3> <p>October 16, 2024</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.8.0-alpha04</code> is released. Version 1.8.0-alpha04 contains <a href="https://android.googlesource.com/platform/frameworks/support/+log/b6ae8d0a0e8cd803f7b84f30101eda1af4f1d6b6..b8a68b0896897fa158508d73a31998a26161d9a7/compose/animation">these commits</a>.</p> <p><strong>Bug Fixes</strong></p> <ul> <li>Fixed a bug causing some easing curves to crash at certain time fractions.</li> <li>Fixed a bug causing improper alignment for <code translate="no" dir="ltr">Modifier.animateContentSize</code> under RTL. (<a href="https://android-review.googlesource.com/#/q/Idae6b6255bb15b0f366b2737e68131f2db733bcb">Idae6b</a>, <a href="https://issuetracker.google.com/issues/372055503">b/372055503</a>)</li> </ul> <h3 id="1.8.0-alpha03" data-text="Version 1.8.0-alpha03" tabindex="-1">Version 1.8.0-alpha03</h3> <p>October 2, 2024</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.8.0-alpha03</code> is released. Version 1.8.0-alpha03 contains <a href="https://android.googlesource.com/platform/frameworks/support/+log/0431b84980e97d6bafdfda7c9038bc4d9529564f..b6ae8d0a0e8cd803f7b84f30101eda1af4f1d6b6/compose/animation">these commits</a>.</p> <p><strong>API Changes</strong></p> <ul> <li>Kotlin version update to 1.9 (<a href="https://android-review.googlesource.com/#/q/I1a14ce236e70bdc55f94afd42ead44587018c097">I1a14c</a>)</li> </ul> <p><strong>Bug Fixes</strong></p> <ul> <li>Fixed an issue in <code translate="no" dir="ltr">AnimatedContent</code> size animation by always tracking and starting animation from the current size to ensure continuity.</li> </ul> <h3 id="1.8.0-alpha02" data-text="Version 1.8.0-alpha02" tabindex="-1">Version 1.8.0-alpha02</h3> <p>September 18, 2024</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.8.0-alpha02</code> is released. Version 1.8.0-alpha02 contains <a href="https://android.googlesource.com/platform/frameworks/support/+log/71a0e55934198cacb4c897d9b20e26e2b7275988..0431b84980e97d6bafdfda7c9038bc4d9529564f/compose/animation">these commits</a>.</p> <h3 id="1.8.0-alpha01" data-text="Version 1.8.0-alpha01" tabindex="-1">Version 1.8.0-alpha01</h3> <p>September 4, 2024</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.8.0-alpha01</code> is released. Version 1.8.0-alpha01 contains <a href="https://android.googlesource.com/platform/frameworks/support/+log/71a0e55934198cacb4c897d9b20e26e2b7275988/compose/animation">these commits</a>.</p> <p><strong>New Features</strong></p> <ul> <li>New <code translate="no" dir="ltr">Modifier.animateBounds</code> API for animating size and position changes within a lookahead scope. <a href="https://android.googlesource.com/platform/frameworks/support/+/94b9394bd96f2c5b261551679c8d3e33dbe2b65a">94b9394</a></li> </ul> <p><strong>API Changes</strong></p> <ul> <li>Remove experimental flags on Keyframes with Arcs and Splines (<a href="https://android.googlesource.com/platform/frameworks/support/+/89e11992e83265305c3aeaf4d8000bb24320b737">89e1199</a>)</li> </ul> <p><strong>Bug Fixes</strong></p> <ul> <li>Skip <code translate="no" dir="ltr">placeHolderSize</code> logic when no match is found (<a href="https://android.googlesource.com/platform/frameworks/support/+/77c0160158470a9899b4d8050c535603ee79b581">77c0160</a>)</li> <li>Clamp play time in <code translate="no" dir="ltr">AndroidFlingSpline</code> to prevent crashes due to non-monotonically increasing play time(<a href="https://android.googlesource.com/platform/frameworks/support/+/9d4758702ca80899774fb03dbaaf2ff09d06f554">9d47587</a>)</li> <li>Fix <code translate="no" dir="ltr">SharedTransitionScope</code> not drawing items in certain conditions (<a href="https://android.googlesource.com/platform/frameworks/support/+/b41077b6316a2c9a15b32765aaff73e301299040">b41077b6</a>)</li> </ul> <p><strong>External Contribution</strong></p> <ul> <li>Prevent setting seekable transition <code translate="no" dir="ltr">playTime</code> when no transition is running by Steven Schoen. (<a href="https://android.googlesource.com/platform/frameworks/support/+/c2e6e7e61424d6883b7fd280785521ed22f42eca">c2e6e7e6</a>)</li> </ul> <h2 id="version_17_2" data-text="Version 1.7" tabindex="-1">Version 1.7</h2> <h3 id="1.7.5" data-text="Version 1.7.5" tabindex="-1">Version 1.7.5</h3> <p>October 30, 2024</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.7.5</code> is released. Version 1.7.5 contains <a href="https://android.googlesource.com/platform/frameworks/support/+log/6b0ae0e41147a8a917cab35b4a6487af4fce6ead..4cbf03b378a865660d8209d0229c2bb1928c6e33/compose/animation">these commits</a>.</p> <p><strong>Bug Fixes</strong></p> <ul> <li>Fixed a bug causing improper alignment for <code translate="no" dir="ltr">Modifier.animateContentSize</code> under RTL. (<a href="https://android-review.googlesource.com/#/q/Idae6b6255bb15b0f366b2737e68131f2db733bcb">Idae6b</a>, <a href="https://issuetracker.google.com/issues/372055503">b/372055503</a>)</li> </ul> <h3 id="1.7.4" data-text="Version 1.7.4" tabindex="-1">Version 1.7.4</h3> <p>October 16, 2024</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.7.4</code> is released. Version 1.7.4 contains <a href="https://android.googlesource.com/platform/frameworks/support/+log/00e91ed140ce2c4677f56fc06692b182b8a07fcf..6b0ae0e41147a8a917cab35b4a6487af4fce6ead/compose/animation">these commits</a>.</p> <h3 id="1.7.3" data-text="Version 1.7.3" tabindex="-1">Version 1.7.3</h3> <p>October 2, 2024</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.7.3</code> is released. Version 1.7.3 contains <a href="https://android.googlesource.com/platform/frameworks/support/+log/baa5cf7b949ae30f236d40b11ba88f9b0c8cffb9..00e91ed140ce2c4677f56fc06692b182b8a07fcf/compose/animation">these commits</a>.</p> <h3 id="1.7.2" data-text="Version 1.7.2" tabindex="-1">Version 1.7.2</h3> <p>September 18, 2024</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.7.2</code> is released. Version 1.7.2 contains <a href="https://android.googlesource.com/platform/frameworks/support/+log/1efd0b233a17f707cd918993df1fa12e0bf9ae83..baa5cf7b949ae30f236d40b11ba88f9b0c8cffb9/compose/animation">these commits</a>.</p> <p><strong>External Contribution</strong></p> <ul> <li>Prevent setting seekable transition <code translate="no" dir="ltr">playTime</code> when no transition is running. Thanks Steven Schoen! (<a href="https://android.googlesource.com/platform/frameworks/support/+/c2e6e7e61424d6883b7fd280785521ed22f42eca">c2e6e7e6</a>)</li> </ul> <h3 id="1.7.1" data-text="Version 1.7.1" tabindex="-1">Version 1.7.1</h3> <p>September 10, 2024</p> <ul> <li>No changes to Android artifacts. <code translate="no" dir="ltr">-desktop</code> artifacts were removed and <code translate="no" dir="ltr">-jvmStubs</code> and <code translate="no" dir="ltr">-linuxx64Stubs</code> artifacts were added. None of these targets are meant to be used, they are placeholders to help Jetbrains Compose efforts.</li> </ul> <h3 id="1.7.0" data-text="Version 1.7.0" tabindex="-1">Version 1.7.0</h3> <p>September 4, 2024</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.7.0</code> is released.</p> <p><strong>Important changes since 1.6.0</strong></p> <p>Important changes in version 1.7.0 are covered in <a href="https://android-developers.googleblog.com/2024/05/whats-new-in-jetpack-compose-at-io-24.html">this blogpost</a>.</p> <p>New Shared Element Transition APIs</p> <ul> <li>New shared element transition APIs await your usage and feedback. These new experimental APIs enable tagging layouts as shared across layout tree using the provided modifiers, producing smoothly changing bounds when one set of shared content exits and the other set enters. (<a href="https://android-review.googlesource.com/#/q/Icb0b953f1eaff80a582b1edd3f21f9f8031cf8b0">Icb0b9</a>)</li> <li>New <code translate="no" dir="ltr">scaleInSharedContentToBounds</code> and <code translate="no" dir="ltr">scaleOutSharedContentToBounds</code> to scale content in <code translate="no" dir="ltr">sharedBounds</code> (<a href="https://android-review.googlesource.com/#/q/I731c18d0bd9a533bbf53ebba62f4638bdc758cbe">I731c1</a>)</li> <li>Experimental <code translate="no" dir="ltr">SharedTransitionScope</code> is now an interface rather than a class. (<a href="https://android-review.googlesource.com/#/q/Iaf856b84ad2d91f94f8e294f015b6341808fcc74">Iaf856</a>)</li> <li>New <code translate="no" dir="ltr">resizeModes</code> (<code translate="no" dir="ltr">ScaleToBounds</code> and <code translate="no" dir="ltr">RemeasureToBounds</code>) for <code translate="no" dir="ltr">sharedBounds</code> to choose between scaling and remeasure. The previous <code translate="no" dir="ltr">scaleIn/OutSharedContentToBounds</code> APIs are now deprecated. (<a href="https://android-review.googlesource.com/#/q/I0d41aa7395b84f0232c1c64281e95f693526faa9">I0d41a</a>)</li> </ul> <p>Improvements to existing APIs:</p> <ul> <li>New <code translate="no" dir="ltr">Modifier.animateContentSize</code> that takes an additional parameter for custom content alignment. (<a href="https://android-review.googlesource.com/#/q/I5623af336f137bb4464cbf7993942452e86bcd88">I5623a</a>, <a href="https://issuetracker.google.com/issues/269803907">b/269803907</a>)</li> <li>New Experimental <code translate="no" dir="ltr">DeferredTargetAnimation</code> for animating size, position, or any other target that is unknown during instantiation. (<a href="https://android-review.googlesource.com/#/q/I60745501487754b36b0e1986bc2bc7ecbac267e8">I60745</a>)</li> <li><code translate="no" dir="ltr">SeekableTransitionState</code> replaces <code translate="no" dir="ltr">snapTo()</code> with <code translate="no" dir="ltr">seekTo()</code>, and adds a <code translate="no" dir="ltr">snapTo()</code> that immediately changes the state to a destination state without any kind of animation.</li> <li>You may now pass a <code translate="no" dir="ltr">periodicBias</code> value (Float) to <code translate="no" dir="ltr">keyframesWithSpline</code>, this will make it so that the initial and final velocity of the spline are equal. Useful for repeatable animations using splines. The bias indicates how much each velocity (initial and final) gets modified to achieve periodicity. (<a href="https://android-review.googlesource.com/#/q/Ic1e6c4996f8c25055955331384639b57e9ad86db">Ic1e6c</a>, <a href="https://issuetracker.google.com/issues/292114811">b/292114811</a>)</li> </ul> <p>The following APIs have become stable or been removed:</p> <ul> <li><code translate="no" dir="ltr">AnimatedVisibilityScope.transition</code> is now a stable API. <code translate="no" dir="ltr">Modifier.animateEnterExit(..)</code> has also been made stable. (<a href="https://android-review.googlesource.com/#/q/I6c1d1ea596664892cc8928c1379bbe8d9b207f1e">I6c1d1</a>)</li> <li><code translate="no" dir="ltr">ApproachLayoutModifierNode</code> and <code translate="no" dir="ltr">Modifier.approachLayout</code> are now stable, with new <code translate="no" dir="ltr">isMeasurementApproachInProgress()</code> and <code translate="no" dir="ltr">isPlacementApproachInProgress()</code> to replace the old <code translate="no" dir="ltr">isMeasurementApproachComplete()</code> and <code translate="no" dir="ltr">isPlacementApproachComplete()</code> respectively.</li> <li>Removed deprecated <code translate="no" dir="ltr">intermediateLayout</code> modifier. (<a href="https://android-review.googlesource.com/#/q/I3e91ca2cfabebde655491f063466d2e5642f055e">I3e91c</a>)</li> <li><code translate="no" dir="ltr">LookaheadScope</code> APIs have been made stable. (<a href="https://android-review.googlesource.com/#/q/I21507b73d88acc221e5963b76b9f1a83539342db">I21507</a>)</li> </ul> <h3 id="1.7.0-rc01" data-text="Version 1.7.0-rc01" tabindex="-1">Version 1.7.0-rc01</h3> <p>August 21, 2024</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.7.0-rc01</code> is released. Version 1.7.0-rc01 contains <a href="https://android.googlesource.com/platform/frameworks/support/+log/98bc1cf10201a973793b72d2ff1ae728070e47e4..d8995e2377dd4baad64b39becb6d480cadd05c86/compose/animation">these commits</a>.</p> <h3 id="1.7.0-beta07" data-text="Version 1.7.0-beta07" tabindex="-1">Version 1.7.0-beta07</h3> <p>August 7, 2024</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.7.0-beta07</code> is released. Version 1.7.0-beta07 contains <a href="https://android.googlesource.com/platform/frameworks/support/+log/16151cbc8a68e976da6f2b0f624c2e9883c55aa3..98bc1cf10201a973793b72d2ff1ae728070e47e4/compose/animation">these commits</a>.</p> <p><strong>Bug Fixes</strong></p> <ul> <li>Fixed <code translate="no" dir="ltr">SharedTransitionScope</code> not drawing overlay items during transition in certain conditions, which would typically include usage with Navigation. (<a href="https://android-review.googlesource.com/#/q/Id65abf8cc50fc08e246c0a85581df32be1983ecc">Id65ab</a>, <a href="https://issuetracker.google.com/issues/347520198">b/347520198</a>)</li> </ul> <h3 id="1.7.0-beta06" data-text="Version 1.7.0-beta06" tabindex="-1">Version 1.7.0-beta06</h3> <p>July 24, 2024</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.7.0-beta06</code> is released. Version 1.7.0-beta06 contains <a href="https://android.googlesource.com/platform/frameworks/support/+log/8346df8de9f86a546fc9c316113bd4a3cc82ede9..16151cbc8a68e976da6f2b0f624c2e9883c55aa3/compose/animation">these commits</a>.</p> <p><strong>Bug Fixes</strong></p> <ul> <li>Fixed <code translate="no" dir="ltr">SeekableTransition</code> leaking transition states by properly cleaning up observations from <code translate="no" dir="ltr">SnapshotStateObserver</code> when the transition is disposed. (<a href="https://android.googlesource.com/platform/frameworks/support/+/b9c7182a9426d47a64dc995fa99ba0a65afc2428">b9c7182</a>)</li> <li>Fixed edge cases where child Transitions are not properly marked complete when the parent completes. (<a href="https://android.googlesource.com/platform/frameworks/support/+/dc42216d1b941eadc40e3851da60564a3d6882a4">dc42216</a>)</li> </ul> <h3 id="1.7.0-beta05" data-text="Version 1.7.0-beta05" tabindex="-1">Version 1.7.0-beta05</h3> <p>July 10, 2024</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.7.0-beta05</code> is released. Version 1.7.0-beta05 contains <a href="https://android.googlesource.com/platform/frameworks/support/+log/487d2b07dba29c903cfd87a8dc7f99483084ebb6..8346df8de9f86a546fc9c316113bd4a3cc82ede9/compose/animation">these commits</a>.</p> <p><strong>Bug Fixes</strong></p> <ul> <li>The Transition property <code translate="no" dir="ltr">totalDurationNanos</code> now can be properly read within a <code translate="no" dir="ltr">snapshotFlow</code>.</li> </ul> <h3 id="1.7.0-beta04" data-text="Version 1.7.0-beta04" tabindex="-1">Version 1.7.0-beta04</h3> <p>June 26, 2024</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.7.0-beta04</code> is released. Version 1.7.0-beta04 contains <a href="https://android.googlesource.com/platform/frameworks/support/+log/c29f7383c14ede0af9cb64be9f3eee63714bc73c..487d2b07dba29c903cfd87a8dc7f99483084ebb6/compose/animation">these commits</a>.</p> <h3 id="1.7.0-beta03" data-text="Version 1.7.0-beta03" tabindex="-1">Version 1.7.0-beta03</h3> <p>June 12, 2024</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.7.0-beta03</code> is released. Version 1.7.0-beta03 contains <a href="https://android.googlesource.com/platform/frameworks/support/+log/1a123f646cfea1599f9efead6da546b0c26063fa..c29f7383c14ede0af9cb64be9f3eee63714bc73c/compose/animation">these commits</a>.</p> <h3 id="1.7.0-beta02" data-text="Version 1.7.0-beta02" tabindex="-1">Version 1.7.0-beta02</h3> <p>May 29, 2024</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.7.0-beta02</code> is released. Version 1.7.0-beta02 contains <a href="https://android.googlesource.com/platform/frameworks/support/+log/6a69101fd0edc8d02aa316df1f43e0552fd2d7c4..1a123f646cfea1599f9efead6da546b0c26063fa/compose/animation">these commits</a>.</p> <h3 id="1.7.0-beta01" data-text="Version 1.7.0-beta01" tabindex="-1">Version 1.7.0-beta01</h3> <p>May 14, 2024</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.7.0-beta01</code> is released. Version 1.7.0-beta01 contains <a href="https://android.googlesource.com/platform/frameworks/support/+log/06bfcd36801b67b9fe9b9bcae0d16a55e7d40fd7..6a69101fd0edc8d02aa316df1f43e0552fd2d7c4/compose/animation">these commits</a>.</p> <p><strong>API Changes</strong></p> <ul> <li>New <code translate="no" dir="ltr">resizeModes</code> (<code translate="no" dir="ltr">ScaleToBounds</code> and <code translate="no" dir="ltr">RemeasureToBounds</code>) for <code translate="no" dir="ltr">sharedBounds</code> to choose between scaling and remeasure. The previous <code translate="no" dir="ltr">scaleIn/OutSharedContentToBounds</code> APIs are now deprecated. (<a href="https://android-review.googlesource.com/#/q/I0d41aa7395b84f0232c1c64281e95f693526faa9">I0d41a</a>)</li> </ul> <p><strong>External Contribution</strong></p> <ul> <li>Experimental <code translate="no" dir="ltr">SharedTransitionScope</code> is now an interface rather than a class by Steven Schoen. (<a href="https://android-review.googlesource.com/#/q/Iaf856b84ad2d91f94f8e294f015b6341808fcc74">Iaf856</a>, <a href="https://issuetracker.google.com/issues/338415048">b/338415048</a>, <a href="https://issuetracker.google.com/issues/338414702">b/338414702</a>)</li> </ul> <h3 id="1.7.0-alpha08" data-text="Version 1.7.0-alpha08" tabindex="-1">Version 1.7.0-alpha08</h3> <p>May 1, 2024</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.7.0-alpha08</code> is released. Version 1.7.0-alpha08 contains <a href="https://android.googlesource.com/platform/frameworks/support/+log/67004410fdbff19f90caa4cc43965ab21dca1943..06bfcd36801b67b9fe9b9bcae0d16a55e7d40fd7/compose/animation">these commits</a>.</p> <p><strong>API Changes</strong></p> <ul> <li><code translate="no" dir="ltr">LookaheadScope</code> APIs have been made stable. (<a href="https://android-review.googlesource.com/#/q/I21507b73d88acc221e5963b76b9f1a83539342db">I21507</a>)</li> </ul> <p><strong>External Contribution</strong></p> <ul> <li>Clear start animation time after <code translate="no" dir="ltr">SeekableTransitionState</code> animates/snaps by Steven Schoen (<a href="https://android.googlesource.com/platform/frameworks/support/+/1ca895298f43862e40f0ac14c300d0432d42153d">1ca89529</a>)</li> </ul> <h3 id="1.7.0-alpha07" data-text="Version 1.7.0-alpha07" tabindex="-1">Version 1.7.0-alpha07</h3> <p>April 17, 2024</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.7.0-alpha07</code> is released. Version 1.7.0-alpha07 contains <a href="https://android.googlesource.com/platform/frameworks/support/+log/02b55f664eba38e42e362e1af3913be1df552d55..67004410fdbff19f90caa4cc43965ab21dca1943/compose/animation">these commits</a>.</p> <p><strong>New Features</strong></p> <ul> <li>New shared element transition APIs await your usage and feedback. These new experimental APIs enable tagging layouts as shared across layout tree using the provided modifiers, producing smoothly changing bounds when one set of shared content exits and the other set enters. (<a href="https://android-review.googlesource.com/#/q/Icb0b953f1eaff80a582b1edd3f21f9f8031cf8b0">Icb0b9</a>)</li> <li>New <code translate="no" dir="ltr">scaleInSharedContentToBounds</code> and <code translate="no" dir="ltr">scaleOutSharedContentToBounds</code> to scale content in <code translate="no" dir="ltr">sharedBounds</code> (<a href="https://android-review.googlesource.com/#/q/I731c18d0bd9a533bbf53ebba62f4638bdc758cbe">I731c1</a>)</li> </ul> <p><strong>API Changes</strong></p> <ul> <li><code translate="no" dir="ltr">AnimatedVisibilityScope.transition</code> is now a stable API. <code translate="no" dir="ltr">Modifier.animateEnterExit(..)</code> has also been made stable. (<a href="https://android-review.googlesource.com/#/q/I6c1d1ea596664892cc8928c1379bbe8d9b207f1e">I6c1d1</a>)</li> <li><code translate="no" dir="ltr">ApproachLayoutModifierNode</code> and <code translate="no" dir="ltr">Modifier.approachLayout</code> are now stable, with new <code translate="no" dir="ltr">isMeasurementApproachInProgress()</code> and <code translate="no" dir="ltr">isPlacementApproachInProgress()</code> to replace the old <code translate="no" dir="ltr">isMeasurementApproachComplete()</code> and <code translate="no" dir="ltr">isPlacementApproachComplete()</code> respectively.</li> <li>Removed deprecated <code translate="no" dir="ltr">intermediateLayout</code> modifier. (<a href="https://android-review.googlesource.com/#/q/I3e91ca2cfabebde655491f063466d2e5642f055e">I3e91c</a>)</li> <li>You may now pass a <code translate="no" dir="ltr">periodicBias</code> value (Float) to <code translate="no" dir="ltr">keyframesWithSpline</code>, this will make it so that the initial and final velocity of the spline are equal. Useful for repeatable animations using splines. The bias indicates how much each velocity (initial and final) gets modified to achieve periodicity. (<a href="https://android-review.googlesource.com/#/q/Ic1e6c4996f8c25055955331384639b57e9ad86db">Ic1e6c</a>, <a href="https://issuetracker.google.com/issues/292114811">b/292114811</a>)</li> </ul> <p><strong>Bug Fixes</strong></p> <ul> <li>Fixed over-shooting and under-shooting easing curves that would previously be clamped to 0..1 (<a href="https://android-review.googlesource.com/#/q/I38747d944b9fc437c77174ccba67beaa6fc7a8fc">I38747</a>)</li> </ul> <h3 id="1.7.0-alpha06" data-text="Version 1.7.0-alpha06" tabindex="-1">Version 1.7.0-alpha06</h3> <p>April 3, 2024</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.7.0-alpha06</code> is released. Version 1.7.0-alpha06 contains <a href="https://android.googlesource.com/platform/frameworks/support/+log/a57d7d17753695012b58c9ce7ad55a8d39157e62..02b55f664eba38e42e362e1af3913be1df552d55/compose/animation">these commits</a>.</p> <p><strong>New Features</strong></p> <ul> <li>Item appearance and disappearance animation support was added into <code translate="no" dir="ltr">LazyColumn</code> and <code translate="no" dir="ltr">LazyRow</code>. Previously it was possible to add <code translate="no" dir="ltr">Modifier.animateItemPlacement()</code> modifier in order to support placement (reordering) animations. We deprecated this modifier and introduced a new non-experimental modifier called <code translate="no" dir="ltr">Modifier.animateItem()</code> which allows you to support all three animation types: appearance (fade in), disappearance (fade out) and reordering. (<a href="https://android-review.googlesource.com/#/q/I2d7f7a376cea26c0a36a59a4586d2705ab04cab7">I2d7f7</a>, <a href="https://issuetracker.google.com/issues/330152398">b/330152398</a>, <a href="https://issuetracker.google.com/issues/150812265">b/150812265</a>)</li> </ul> <p><strong>Bug Fixes</strong></p> <ul> <li>Improved performance of <code translate="no" dir="ltr">updateTransition</code> API.</li> </ul> <h3 id="1.7.0-alpha05" data-text="Version 1.7.0-alpha05" tabindex="-1">Version 1.7.0-alpha05</h3> <p>March 20, 2024</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.7.0-alpha05</code> is released. Version 1.7.0-alpha05 contains <a href="https://android.googlesource.com/platform/frameworks/support/+log/638a8d3a474af45f6ad5fdc3d6d1836ea42d1778..a57d7d17753695012b58c9ce7ad55a8d39157e62/compose/animation">these commits</a>.</p> <p><strong>API Changes</strong></p> <ul> <li><code translate="no" dir="ltr">SeekableTransitionState</code> replaces <code translate="no" dir="ltr">snapTo()</code> with <code translate="no" dir="ltr">seekTo()</code>, and adds a <code translate="no" dir="ltr">snapTo()</code> that immediately changes the state to a destination state without any kind of animation.</li> </ul> <h3 id="1.7.0-alpha04" data-text="Version 1.7.0-alpha04" tabindex="-1">Version 1.7.0-alpha04</h3> <p>March 6, 2024</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.7.0-alpha04</code> is released. Version 1.7.0-alpha04 contains <a href="https://android.googlesource.com/platform/frameworks/support/+log/e1b82c49c59d8e976ce558aba5586f6c61bc9054..638a8d3a474af45f6ad5fdc3d6d1836ea42d1778/compose/animation">these commits</a>.</p> <p><strong>API Changes</strong></p> <ul> <li>New API <code translate="no" dir="ltr">Path.reverse()</code> to reverse a path's direction (<a href="https://android-review.googlesource.com/#/q/I36348a9731a210b34cd4c177d19ef617a87d8832">I36348</a>)</li> </ul> <h3 id="1.7.0-alpha03" data-text="Version 1.7.0-alpha03" tabindex="-1">Version 1.7.0-alpha03</h3> <p>February 21, 2024</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.7.0-alpha03</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/ca2a8cf8da3a3502fccc593974f8085653e38261..e1b82c49c59d8e976ce558aba5586f6c61bc9054/compose/animation">Version 1.7.0-alpha03 contains these commits.</a></p> <p><strong>New Features</strong></p> <ul> <li>New <code translate="no" dir="ltr">Modifier.animateContentSize</code> that takes an additional parameter for custom content alignment. (<a href="https://android-review.googlesource.com/#/q/I5623af336f137bb4464cbf7993942452e86bcd88">I5623a</a>, <a href="https://issuetracker.google.com/issues/269803907">b/269803907</a>)</li> <li>New Experimental <code translate="no" dir="ltr">DeferredTargetAnimation</code> for animating size, position, or any other target that is unknown during instantiation. (<a href="https://android-review.googlesource.com/#/q/I60745501487754b36b0e1986bc2bc7ecbac267e8">I60745</a>)</li> </ul> <h3 id="1.7.0-alpha02" data-text="Version 1.7.0-alpha02" tabindex="-1">Version 1.7.0-alpha02</h3> <p>February 7, 2024</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.7.0-alpha02</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/2b3fea6e026942389e9db59a4d68f2bb32c94e8f..ca2a8cf8da3a3502fccc593974f8085653e38261/compose/animation">Version 1.7.0-alpha02 contains these commits.</a></p> <p><strong>Bug Fixes</strong></p> <ul> <li>Compatibility fix for <code translate="no" dir="ltr">KeyframesSpec</code>. (<a href="https://android-review.googlesource.com/#/q/I2bdf33634d19c8077a35ee21020fb8991eb6d5a1">I2bdf3</a>, <a href="https://issuetracker.google.com/issues/322214617">b/322214617</a>)</li> <li>Fixed <code translate="no" dir="ltr">Modifier.animateContentSize</code> not resetting properly when used in <code translate="no" dir="ltr">LazyList</code>. (<a href="https://android-review.googlesource.com/#/q/I070512423d2c358326c50fae32ed0696d6fe9193">I070512</a>, <a href="https://issuetracker.google.com/issues/322525716">b/322525716</a>)</li> <li>Fixed <code translate="no" dir="ltr">IllegalStateException</code> on <code translate="no" dir="ltr">KeyframesSpec</code> when using out of range timestamps. (<a href="https://android-review.googlesource.com/#/q/I341b862ed2c5acb92ec596e5d4cb0445c5663ad6">I341b8</a>, <a href="https://issuetracker.google.com/issues/322839811">b/322839811</a>)</li> </ul> <h3 id="1.7.0-alpha01" data-text="Version 1.7.0-alpha01" tabindex="-1">Version 1.7.0-alpha01</h3> <p>January 24, 2024</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.7.0-alpha01</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/2b3fea6e026942389e9db59a4d68f2bb32c94e8f/compose/animation">Version 1.7.0-alpha01 contains these commits.</a></p> <h2 id="version_16_2" data-text="Version 1.6" tabindex="-1">Version 1.6</h2> <h3 id="1.6.8" data-text="Version 1.6.8" tabindex="-1">Version 1.6.8</h3> <p>June 12, 2024</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.6.8</code> is released. Version 1.6.8 contains <a href="https://android.googlesource.com/platform/frameworks/support/+log/9a13a0e3b1197d66bfc19b9051576bc705f2c337..9dbbab668fd22cd643de4651197354a828aaa7b9/compose/animation">these commits</a>.</p> <h3 id="1.6.7" data-text="Version 1.6.7" tabindex="-1">Version 1.6.7</h3> <p>May 1, 2024</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.6.7</code> is released. Version 1.6.7 contains <a href="https://android.googlesource.com/platform/frameworks/support/+log/a886cfe86852600d131eb7fa1ec8b7d0a8fc1e6b..9a13a0e3b1197d66bfc19b9051576bc705f2c337/compose/animation">these commits</a>.</p> <h3 id="1.6.6" data-text="Version 1.6.6" tabindex="-1">Version 1.6.6</h3> <p>April 17, 2024</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.6.6</code> is released. No changes since the previous release</p> <h3 id="1.6.5" data-text="Version 1.6.5" tabindex="-1">Version 1.6.5</h3> <p>April 3, 2024</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.6.5</code> is released. Version 1.6.5 contains <a href="https://android.googlesource.com/platform/frameworks/support/+log/1cbb6ee3e46f538bb2dc7ef6ce8e9c4b3cbc4dc3..917ada96acf0ac343128c3f4af9bd67a4b80b99c/compose/animation">these commits</a>.</p> <h3 id="1.6.4" data-text="Version 1.6.4" tabindex="-1">Version 1.6.4</h3> <p>March 20, 2024</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.6.4</code> is released. Version 1.6.4 contains <a href="https://android.googlesource.com/platform/frameworks/support/+log/22b329dfa8888198eb3024650d236b3afe6c0907..1cbb6ee3e46f538bb2dc7ef6ce8e9c4b3cbc4dc3/compose/animation">these commits</a>.</p> <h3 id="1.6.3" data-text="Version 1.6.3" tabindex="-1">Version 1.6.3</h3> <p>March 6, 2024</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.6.3</code> is released. Version 1.6.3 contains <a href="https://android.googlesource.com/platform/frameworks/support/+log/af119e2e31de85654fb7b2e5a2c7e724231131fd..22b329dfa8888198eb3024650d236b3afe6c0907/compose/animation">these commits</a>.</p> <h3 id="1.6.2" data-text="Version 1.6.2" tabindex="-1">Version 1.6.2</h3> <p>February 21, 2024</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.6.2</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/f639ccf09a84fa5af4a9016fa239539aeed40b94..af119e2e31de85654fb7b2e5a2c7e724231131fd/compose/animation">Version 1.6.2 contains these commits.</a></p> <h3 id="1.6.1" data-text="Version 1.6.1" tabindex="-1">Version 1.6.1</h3> <p>February 7, 2024</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.6.1</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/4c61c4d68d2bf0ccc61e316bc2a03754bb6979cf..f639ccf09a84fa5af4a9016fa239539aeed40b94/compose/animation">Version 1.6.1 contains these commits.</a></p> <p><strong>Bug Fixes</strong></p> <ul> <li>Compatibility fix for <code translate="no" dir="ltr">KeyframesSpec</code>. (<a href="https://android-review.googlesource.com/#/q/I2bdf33634d19c8077a35ee21020fb8991eb6d5a1">I2bdf3</a>, <a href="https://issuetracker.google.com/issues/322214617">b/322214617</a>)</li> </ul> <h3 id="1.6.0" data-text="Version 1.6.0" tabindex="-1">Version 1.6.0</h3> <p>January 24, 2024</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.6.0</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/296c44d6ba03d2167bdea85d53e8387d7b1644f9..4c61c4d68d2bf0ccc61e316bc2a03754bb6979cf/compose/animation">Version 1.6.0 contains these commits.</a></p> <h3 id="1.6.0-rc01" data-text="Version 1.6.0-rc01" tabindex="-1">Version 1.6.0-rc01</h3> <p>January 10, 2024</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.6.0-rc01</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/fc038a4bc84de9ab20493d6efa8d26f4a70214ae..6dc685be02316455881d22b69d0bb8adbe768c4f/compose/animation">Version 1.6.0-rc01 contains these commits.</a></p> <h3 id="1.6.0-beta03" data-text="Version 1.6.0-beta03" tabindex="-1">Version 1.6.0-beta03</h3> <p>December 13, 2023</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.6.0-beta03</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/15c82aaef0f1fd0307d6c00061859e5b6c4384c6..b76585a287cbcfdae38c3e16e5acbc6e26e808e2/compose/animation">Version 1.6.0-beta03 contains these commits.</a></p> <p><strong>API Changes</strong></p> <ul> <li>Temporarily removed <code translate="no" dir="ltr">scaleInToFitContainer</code> and <code translate="no" dir="ltr">scaleOutToFitContainer</code> from <code translate="no" dir="ltr">AnimatedContentTransitionScope</code> as they require lookahead. They will be available when lookahead is on by default or opted-in in future releases.</li> </ul> <h3 id="1.6.0-beta02" data-text="Version 1.6.0-beta02" tabindex="-1">Version 1.6.0-beta02</h3> <p>November 29, 2023</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.6.0-beta02</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/1f80a6f0c1cb96288c04124001fa2c9bd29617d6..15c82aaef0f1fd0307d6c00061859e5b6c4384c6/compose/animation">Version 1.6.0-beta02 contains these commits.</a></p> <h3 id="1.6.0-beta01" data-text="Version 1.6.0-beta01" tabindex="-1">Version 1.6.0-beta01</h3> <p>November 15, 2023</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.6.0-beta01</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/465c5c5b7a0d79793bddb26a695f67aba8ea2f7e..1f80a6f0c1cb96288c04124001fa2c9bd29617d6/compose/animation">Version 1.6.0-beta01 contains these commits.</a></p> <p><strong>API Changes</strong></p> <ul> <li><code translate="no" dir="ltr">ExitTransition.Hold</code> has been renamed to <code translate="no" dir="ltr">ExitTransition.KeepUntilTransitionsFinished</code> to be more explicit. (<a href="https://android-review.googlesource.com/#/q/I1c4906213f267c9dabae03f15e6d9d9f05622581">I1c490</a>)</li> <li>You may now use <code translate="no" dir="ltr">keyframesWithSpline</code> to interpolate any N-dimensional value using monotonic splines. It's particularly useful to interpolate positional values such as <code translate="no" dir="ltr">Offset</code>, <code translate="no" dir="ltr">IntOffset</code>, <code translate="no" dir="ltr">DpOffset</code>. Added as Experimental API.</li> </ul> <p><strong>Bug Fixes</strong></p> <ul> <li>Add renderer support for Sweep Gradient in <code translate="no" dir="ltr">ArcLine</code>. (<a href="https://android-review.googlesource.com/#/q/I4d5bb5948d2216dca2a29d2449fd97519b2b65bb">I4d5bb</a>)</li> <li>Implement equals and hashcode for <code translate="no" dir="ltr">PageSize.Fixed</code>. (<a href="https://android-review.googlesource.com/#/q/Ie3edea3aafd75068cd57c04aafdd7055ead20ad7">Ie3ede</a>, <a href="https://issuetracker.google.com/issues/300134276">b/300134276</a>)</li> <li>Fix binary compatibility issue with Window Inset change. (<a href="https://android-review.googlesource.com/#/q/Iee695f0f1b2bf24a820b5a1bccfe550d9c29a5fa">Iee695</a>)</li> <li>Remove material core layer for Material3 Chip/Button as the microbenchmarks show better performance without it. (<a href="https://android-review.googlesource.com/#/q/I5555573520638dd3c7f0d202e048ae6fffde19e5">I55555</a>)</li> </ul> <h3 id="1.6.0-alpha08" data-text="Version 1.6.0-alpha08" tabindex="-1">Version 1.6.0-alpha08</h3> <p>October 18, 2023</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.6.0-alpha08</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/1f7407d4293384a1b91bc142880e3525048b3443..465c5c5b7a0d79793bddb26a695f67aba8ea2f7e/compose/animation">Version 1.6.0-alpha08 contains these commits.</a></p> <p><strong>API Changes</strong></p> <ul> <li>Deprecated <code translate="no" dir="ltr">KeyframesSpecConfig#with</code> in favor <code translate="no" dir="ltr">KeyframesSpecConfig#using</code> which preserves the builder pattern. (<a href="https://android-review.googlesource.com/#/q/I1d76980eee35ded738ac185a96857fdb048f7b22">I1d769</a>)</li> </ul> <h3 id="1.6.0-alpha07" data-text="Version 1.6.0-alpha07" tabindex="-1">Version 1.6.0-alpha07</h3> <p>October 4, 2023</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.6.0-alpha07</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/91bb8c1f81dcb031bda00fcd8e55f1e890b56f06..1f7407d4293384a1b91bc142880e3525048b3443/compose/animation">Version 1.6.0-alpha07 contains these commits.</a></p> <p><strong>API Changes</strong></p> <ul> <li>Fixed and Scrollable Tabrows now have Primary and Secondary variants. These correctly map to the color and indicator behavior as defined in Material3.</li> <li><code translate="no" dir="ltr">PrimaryScrollableTabRow</code> and <code translate="no" dir="ltr">SecondaryScrollableTabRow</code> now expose scroll state. (<a href="https://android-review.googlesource.com/#/q/Iec8f5a2876a15865842a6f0d4a584b539e16892a">Iec8f5</a>, <a href="https://issuetracker.google.com/issues/260572337">b/260572337</a>)</li> </ul> <h3 id="1.6.0-alpha06" data-text="Version 1.6.0-alpha06" tabindex="-1">Version 1.6.0-alpha06</h3> <p>September 20, 2023</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.6.0-alpha06</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/9ce75ea1baa2af10dda8f787f69c40c6654bcac1..91bb8c1f81dcb031bda00fcd8e55f1e890b56f06/compose/animation">Version 1.6.0-alpha06 contains these commits.</a></p> <h3 id="1.6.0-alpha05" data-text="Version 1.6.0-alpha05" tabindex="-1">Version 1.6.0-alpha05</h3> <p>September 6, 2023</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.6.0-alpha05</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/216f103fa4a5c7247f7bafc8bb3014616c265f0c..9ce75ea1baa2af10dda8f787f69c40c6654bcac1/compose/animation">Version 1.6.0-alpha05 contains these commits.</a></p> <p><strong>API Changes</strong></p> <ul> <li>Added <code translate="no" dir="ltr">PathEasing</code> to enable an arbitrary path to be supplied to an easing curve. (<a href="https://android-review.googlesource.com/#/q/Idb4b92266c7716e199e033e6734b3524c3c968a4">Idb4b9</a>)</li> </ul> <h3 id="1.6.0-alpha04" data-text="Version 1.6.0-alpha04" tabindex="-1">Version 1.6.0-alpha04</h3> <p>August 23, 2023</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.6.0-alpha04</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/5d7dd999525725bd038a00ca4e89e0fef624a6da..216f103fa4a5c7247f7bafc8bb3014616c265f0c/compose/animation">Version 1.6.0-alpha04 contains these commits.</a></p> <p><strong>API Changes</strong></p> <ul> <li>Add <code translate="no" dir="ltr">SeekableTransitionState</code> to allow developers to control the progress of a transition. (<a href="https://android-review.googlesource.com/#/q/I8e69df11beeb580c8ba4552fc5d7647367a44dcc">I8e69d</a>)</li> </ul> <h3 id="1.6.0-alpha03" data-text="Version 1.6.0-alpha03" tabindex="-1">Version 1.6.0-alpha03</h3> <p>August 9, 2023</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.6.0-alpha03</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/4aed940027a19667e67d155563fc5fa8b7279313..5d7dd999525725bd038a00ca4e89e0fef624a6da/compose/animation">Version 1.6.0-alpha03 contains these commits.</a></p> <p><strong>API Changes</strong></p> <ul> <li>New type of enter/exit transition that scales the content based on the size of the animating container during enter & exit animation. <code translate="no" dir="ltr">LookaheadScope</code> Composable fun and interface are now stable. (<a href="https://android-review.googlesource.com/#/q/Ifb2ce945db06e291aeb0980872b427bf0a580ede">Ifb2ce</a>)</li> </ul> <h3 id="1.6.0-alpha02" data-text="Version 1.6.0-alpha02" tabindex="-1">Version 1.6.0-alpha02</h3> <p>July 26, 2023</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.6.0-alpha02</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/3b5b931546a48163444a9eddc533489fcddd7494..4aed940027a19667e67d155563fc5fa8b7279313/compose/animation">Version 1.6.0-alpha02 contains these commits.</a></p> <p><strong>API Changes</strong></p> <ul> <li>New <code translate="no" dir="ltr">ExitTransition.Hold</code> to display outgoing content in <code translate="no" dir="ltr">AnimatedContent</code> until both enter & exit transition are finished. (<a href="https://android-review.googlesource.com/#/q/I5984fde342fe99f422eaaf18ea639205926af2ee">I5984f</a>)</li> <li>Additional annotations to specify allowed inputs to composables (<a href="https://android-review.googlesource.com/#/q/I51109ce34ab8bb50a8104572d79d2a94b67f3b17">I51109</a>)</li> </ul> <h3 id="1.6.0-alpha01" data-text="Version 1.6.0-alpha01" tabindex="-1">Version 1.6.0-alpha01</h3> <p>June 21, 2023</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.6.0-alpha01</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/9eb2d144f9209cb9c4205ad1f981eb7ddf29b96e..3b5b931546a48163444a9eddc533489fcddd7494/compose/animation">Version 1.6.0-alpha01 contains these commits.</a></p> <p><strong>New Features</strong></p> <ul> <li>Enable <code translate="no" dir="ltr">Modifier.animateContentSize</code> and <code translate="no" dir="ltr">AnimatedVisibility</code> to be fully integrated into the lookahead system by reporting the target size in the lookahead pass.</li> </ul> <p><strong>API Changes</strong></p> <ul> <li>New property in <code translate="no" dir="ltr">IntrinsincMeasureScope</code> and its implementations (e.g. <code translate="no" dir="ltr">MeasureScope</code>) to indicate whether the current measure pass is a lookahead pass. (<a href="https://android-review.googlesource.com/#/q/I7a8122bf09752d7afb6ace1a0b397a2632708e95">I7a812</a>)</li> </ul> <p><strong>Bug Fixes</strong></p> <ul> <li>Removed allocations from spring animations. (<a href="https://android-review.googlesource.com/#/q/Ie94317f7206752e917cd5e74eb19e6abede8e656">Ie9431</a>)</li> <li>value parameter name for Enum.valueOf changed (<a href="https://android-review.googlesource.com/#/q/Ia9b89b3c1bd0407c9beac825c49477cdfc9c1f2a">Ia9b89</a>)</li> <li>more thrown exceptions from enum valueOf (<a href="https://android-review.googlesource.com/#/q/I818fed80f3a1af1a97b5b0de7882fb2e1b99ae62">I818fe</a>)</li> </ul> <h2 id="version_15_2" data-text="Version 1.5" tabindex="-1">Version 1.5</h2> <h3 id="1.5.4" data-text="Version 1.5.4" tabindex="-1">Version 1.5.4</h3> <p>October 18, 2023</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.5.4</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/4ed495b997a532cc4cbe39abdbaa98b8fc6f3764..b6d5e6e62e40f6938bdbcfef1d6c8a79e25006f8/compose/animation">Version 1.5.4 contains these commits.</a></p> <h3 id="1.5.3" data-text="Version 1.5.3" tabindex="-1">Version 1.5.3</h3> <p>October 4, 2023</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.5.3</code> is released. This version has no changes</p> <h3 id="1.5.2" data-text="Version 1.5.2" tabindex="-1">Version 1.5.2</h3> <p>September 27, 2023</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.5.2</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/0a2cac855f7723e1e485c20ac68d34dc8bb68d1e..2bc777611812ef8ef7329a332fbaf8348af05ec7/compose/animation">Version 1.5.2 contains these commits.</a></p> <h3 id="1.5.1" data-text="Version 1.5.1" tabindex="-1">Version 1.5.1</h3> <p>September 6, 2023</p> <p><code translate="no" dir="ltr">androidx.compose.foundation:foundation-*:1.5.1</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/65e3f15108d25a7e1c5c841c0855b21eca194070..824a15c9a34e9d13a5f58f4066029f0a784186b6/compose/foundation">Version 1.5.1 contains these commits.</a></p> <p><strong>Bug Fixes</strong></p> <ul> <li>Fixed text fields showing keyboard and being editable when <code translate="no" dir="ltr">readOnly</code> is true. Also fixed the keyboard not showing when <code translate="no" dir="ltr">readOnly</code> is changed from true to false while focused. (<a href="https://android-review.googlesource.com/#/q/I34a19a80d8f44b10f23db0ca0dd7b43b69311c7c">I34a19</a>, <a href="https://issuetracker.google.com/issues/246909589">b/246909589</a>)</li> </ul> <h3 id="1.5.1" data-text="Version 1.5.1" tabindex="-1">Version 1.5.1</h3> <p>September 6, 2023</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.5.1</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/65e3f15108d25a7e1c5c841c0855b21eca194070..824a15c9a34e9d13a5f58f4066029f0a784186b6/compose/animation">Version 1.5.1 contains these commits.</a></p> <h3 id="1.5.0" data-text="Version 1.5.0" tabindex="-1">Version 1.5.0</h3> <p>August 9, 2023</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.5.0</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/e423b92ad8e8707ff4031626131f05e33979eac8..65e3f15108d25a7e1c5c841c0855b21eca194070/compose/animation">Version 1.5.0 contains these commits.</a></p> <h3 id="1.5.0-rc01" data-text="Version 1.5.0-rc01" tabindex="-1">Version 1.5.0-rc01</h3> <p>July 26, 2023</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.5.0-rc01</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/81e6706c269471032b283755131d2aa4e8821a89..e423b92ad8e8707ff4031626131f05e33979eac8/compose/animation">Version 1.5.0-rc01 contains these commits.</a></p> <p><strong>Bug Fixes</strong></p> <ul> <li><p>Fixed an issue where calling <code translate="no" dir="ltr">.value</code> on a primitive state type (like <code translate="no" dir="ltr">MutableIntState</code>) would report a lint warning with an invalid fix. The inspection will now recommend migrating to the correct property. (<a href="https://android-review.googlesource.com/#/q/Iba9536e23d6d94f1056cf7859454e4e2d6ee03cb">Iba953</a>, <a href="https://issuetracker.google.com/issues/287279257">b/287279257</a>)</p></li> <li><p>An optional inspection to recommend migrating <code translate="no" dir="ltr">mutableStateOf()</code> calls to their corresponding specialized types for primitives is available. Its lint ID is <code translate="no" dir="ltr">AutoboxingStateCreation</code>. Previously, this inspection was enabled by default for all projects. To see this warning in Android Studio's editor and your project's lint outputs, change its severity from informational to warning (or higher) by declaring <code translate="no" dir="ltr">warning "AutoboxingStateCreation"</code> inside your module's <code translate="no" dir="ltr">build.gradle</code> or <code translate="no" dir="ltr">build.gradle.kts</code> configuration as shown (<a href="https://android-review.googlesource.com/#/q/I34f7ea540f782ae95630f7f94cab93d842dfdd0f">I34f7e</a>):</p> <div></div><devsite-code><pre class="devsite-click-to-copy" translate="no" dir="ltr" is-upgraded syntax="Groovy"><code translate="no" dir="ltr"><span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">android</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-o">{</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">lint</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-o">{</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">warning</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-s2">"AutoboxingStateCreation"</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-o">}</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-o">...</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-o">}</span> </code></pre></devsite-code></li> </ul> <h3 id="1.5.0-beta03" data-text="Version 1.5.0-beta03" tabindex="-1">Version 1.5.0-beta03</h3> <p>June 28, 2023</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.5.0-beta03</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/9eb2d144f9209cb9c4205ad1f981eb7ddf29b96e..24dc7b0781cb908b2385ec207ca1b3a72cb90093/compose/animation">Version 1.5.0-beta03 contains these commits.</a></p> <h3 id="1.5.0-beta02" data-text="Version 1.5.0-beta02" tabindex="-1">Version 1.5.0-beta02</h3> <p>June 7, 2023</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.5.0-beta02</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/d26ca4055c940126ae1663ad0d54aafd23205ea4..df792c9ff86d87f538bab5d7f9dd9f56e2437b15/compose/animation">Version 1.5.0-beta02 contains these commits.</a></p> <h3 id="1.5.0-beta01" data-text="Version 1.5.0-beta01" tabindex="-1">Version 1.5.0-beta01</h3> <p>May 24, 2023</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.5.0-beta01</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/6f3ac2bd197d5e61ab2708125b57d6ae4003ad68..d26ca4055c940126ae1663ad0d54aafd23205ea4/compose/animation">Version 1.5.0-beta01 contains these commits.</a></p> <p><strong>API Changes</strong></p> <ul> <li>Removed allocations in recomposition, color animations, and <code translate="no" dir="ltr">AndroidComposeView</code> (<a href="https://android-review.googlesource.com/#/q/Ib2bfaf0af40bc0970424f86141ae24607a2b1223">Ib2bfa</a>)</li> </ul> <p><strong>Bug Fixes</strong></p> <ul> <li>Removed allocations from spring animations (<a href="https://android-review.googlesource.com/#/q/Ie94317f7206752e917cd5e74eb19e6abede8e656">Ie9431</a>)</li> </ul> <h3 id="1.5.0-alpha04" data-text="Version 1.5.0-alpha04" tabindex="-1">Version 1.5.0-alpha04</h3> <p>May 10, 2023</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.5.0-alpha04</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/01bd392d5702480f8bfe61a8f8bbbea64cf362a0..6f3ac2bd197d5e61ab2708125b57d6ae4003ad68/compose/animation">Version 1.5.0-alpha04 contains these commits.</a></p> <p><strong>API Changes</strong></p> <ul> <li><code translate="no" dir="ltr">ContentKey</code> is now supported in <code translate="no" dir="ltr">AnimatedContent</code> to allow more control for when transition should happen. (<a href="https://android-review.googlesource.com/#/q/Ic069b01c0d2b302c7527ed850c32ba68bfc0101f">Ic069b</a>)</li> </ul> <h3 id="1.5.0-alpha03" data-text="Version 1.5.0-alpha03" tabindex="-1">Version 1.5.0-alpha03</h3> <p>April 19, 2023</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.5.0-alpha03</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/a200cb82769634cecdb118ec4f0bfdf0b086e597..01bd392d5702480f8bfe61a8f8bbbea64cf362a0/compose/animation">Version 1.5.0-alpha03 contains these commits.</a></p> <p><strong>New Features</strong></p> <ul> <li>New default behavior for <code translate="no" dir="ltr">SubcomposeLayout</code> in <code translate="no" dir="ltr">LookaheadScope</code>. It allows <code translate="no" dir="ltr">SubcomposeLayouts</code> that don’t have conditional slots (e.g. <code translate="no" dir="ltr">TabRow</code>, <code translate="no" dir="ltr">Scaffold</code>, <code translate="no" dir="ltr">BoxWithConstraints</code>, etc) to work nicely with lookahead animations.</li> </ul> <p><strong>API Changes</strong></p> <ul> <li>New default <code translate="no" dir="ltr">intermediateMeasurePolicy</code> that reuses measure policy from lookahead pass allows <code translate="no" dir="ltr">SubcomposeLayout</code> subtypes without conditional slots such as <code translate="no" dir="ltr">Scaffold</code>, <code translate="no" dir="ltr">TabRow</code>, and <code translate="no" dir="ltr">BoxWithConstraints</code> to work with lookahead by default. (<a href="https://android-review.googlesource.com/#/q/Id84c8357e63905ea09b07acee91094489eb04402">Id84c8</a>)</li> <li>Rename infix fun with to <code translate="no" dir="ltr">togetherWith</code> for combining enter and exit transitions. New <code translate="no" dir="ltr">AnimatedContentScope</code> as receiver for the content lambda. (<a href="https://android-review.googlesource.com/#/q/Ic39aee09d77a905e538a101264dc352e1fecbfc0">Ic39ae</a>)</li> </ul> <h3 id="1.5.0-alpha02" data-text="Version 1.5.0-alpha02" tabindex="-1">Version 1.5.0-alpha02</h3> <p>April 5, 2023</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.5.0-alpha02</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/5e7d256f82fbafb6d059ab7b18fddd87c7531553..a200cb82769634cecdb118ec4f0bfdf0b086e597/compose/animation">Version 1.5.0-alpha02 contains these commits.</a></p> <p><strong>New Features</strong></p> <ul> <li>New experimental API to support lookahead in <code translate="no" dir="ltr">SubcomposeLayout</code>. This will allow <code translate="no" dir="ltr">SubcomposeLayout</code> to function properly in a <code translate="no" dir="ltr">LookaheadScope</code>. More out-of-the-box support for specific subtypes of <code translate="no" dir="ltr">SubcomposeLayout</code> will come soon.</li> </ul> <p><strong>API Changes</strong></p> <ul> <li>New <code translate="no" dir="ltr">SubcomposeLayout</code> API that takes an additional intermediate measure policy for handling measure/layout logic during lookahead-based animations. (<a href="https://android-review.googlesource.com/#/q/I017d37b9d3c2f890387229bc8cfc6515913c1a3a">I017d3</a>)</li> </ul> <h3 id="1.5.0-alpha01" data-text="Version 1.5.0-alpha01" tabindex="-1">Version 1.5.0-alpha01</h3> <p>March 22, 2023</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation-*:1.5.0-alpha01</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/5e7d256f82fbafb6d059ab7b18fddd87c7531553/compose/animation">Version 1.5.0-alpha01 contains these commits.</a></p> <p><strong>API Changes</strong></p> <ul> <li><code translate="no" dir="ltr">AnimatedContent</code> APIs are now stable <code translate="no" dir="ltr">AnimatedContentScope</code> has been renamed to <code translate="no" dir="ltr">AnimatedContentTransitionScope</code>. <code translate="no" dir="ltr">scaleIn</code> and <code translate="no" dir="ltr">scaleOut</code> are now stable APIs. (<a href="https://android-review.googlesource.com/#/q/Iaf54e341fb897868b6bfa90d4ef81faa75b17ed5">Iaf54e</a>)</li> </ul> <h2 id="version_14_2" data-text="Version 1.4" tabindex="-1">Version 1.4</h2> <h3 id="1.4.3" data-text="Version 1.4.3" tabindex="-1">Version 1.4.3</h3> <p>May 3, 2023</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.4.3</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.4.3</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.4.3</code> are released with no changes (only a version bump).</p> <h3 id="1.4.2" data-text="Version 1.4.2" tabindex="-1">Version 1.4.2</h3> <p>April 19, 2023</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.4.2</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.4.2</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.4.2</code> are released with no changes. <a href="https://android.googlesource.com/platform/frameworks/support/+log/5dcb085369a3574f1b09eaaf2a58ee0ea01c22d5..0872f930da585f7fbf6e17c74b1dc42045e8b2c6/compose/animation">Version 1.4.2 contains these commits.</a></p> <h3 id="1.4.1" data-text="Version 1.4.1" tabindex="-1">Version 1.4.1</h3> <p>April 5, 2023</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.4.1</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.4.1</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.4.1</code> are released with no changes. <a href="https://android.googlesource.com/platform/frameworks/support/+log/c13b30cf6683e0a43585416f30b55e07bf2b560e..5dcb085369a3574f1b09eaaf2a58ee0ea01c22d5/compose/animation">Version 1.4.1 contains these commits.</a></p> <h3 id="1.4.0" data-text="Version 1.4.0" tabindex="-1">Version 1.4.0</h3> <p>March 22, 2023</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.4.0</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.4.0</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.4.0</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/548c8ac2570ae6cf15798fea1380491f7d93796b..c5b142d6ab0494c996b2378d5008ac1cd6da75f3/compose/animation">Version 1.4.0 contains these commits.</a></p> <p><strong>Important changes since 1.3.0</strong></p> <ul> <li>Tooling label is supported in r<code translate="no" dir="ltr">ememberInfiniteTransition</code> and all the extension functions on <code translate="no" dir="ltr">InfiniteTransition</code> and Transition (e.g. <code translate="no" dir="ltr">InfiniteTransition#animateColor</code>) (<a href="https://android-review.googlesource.com/#/q/I56ef7627431ba19c7462719e2be3af7245249573">I56ef7</a>)</li> </ul> <h3 id="1.4.0-rc01" data-text="Version 1.4.0-rc01" tabindex="-1">Version 1.4.0-rc01</h3> <p>March 8, 2023</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.4.0-rc01</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.4.0-rc01</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.4.0-rc01</code> are released with no changes. <a href="https://android.googlesource.com/platform/frameworks/support/+log/87533b4ff06971ed59028936cd9b6da988cd4522..6022301db806601f282c53b8cbb5a981923a1589/compose/animation">Version 1.4.0-rc01 contains these commits.</a></p> <h3 id="1.4.0-beta02" data-text="Version 1.4.0-beta02" tabindex="-1">Version 1.4.0-beta02</h3> <p>February 22, 2023</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.4.0-beta02</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.4.0-beta02</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.4.0-beta02</code> are released with no changes. <a href="https://android.googlesource.com/platform/frameworks/support/+log/f7337eab774a6ce3b17367d5f31708564b66e677..87533b4ff06971ed59028936cd9b6da988cd4522/compose/animation">Version 1.4.0-beta02 contains these commits.</a></p> <h3 id="1.4.0-beta01" data-text="Version 1.4.0-beta01" tabindex="-1">Version 1.4.0-beta01</h3> <p>February 8, 2023</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.4.0-beta01</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.4.0-beta01</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.4.0-beta01</code> are released with no changes. <a href="https://android.googlesource.com/platform/frameworks/support/+log/e5dad1e7d1c225f89f7c2d5a39a7a0de8d637d7b..f7337eab774a6ce3b17367d5f31708564b66e677/compose/animation">Version 1.4.0-beta01 contains these commits.</a></p> <h3 id="1.4.0-alpha05" data-text="Version 1.4.0-alpha05" tabindex="-1">Version 1.4.0-alpha05</h3> <p>January 25, 2023</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.4.0-alpha05</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.4.0-alpha05</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.4.0-alpha05</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/adf1c279a86ab3886e1666c08e2c3efba783367b..e5dad1e7d1c225f89f7c2d5a39a7a0de8d637d7b/compose/animation">Version 1.4.0-alpha05 contains these commits.</a></p> <p><strong>Changes</strong></p> <ul> <li>No changes in animation libraries since the last alpha, version bump only</li> </ul> <h3 id="1.4.0-alpha04" data-text="Version 1.4.0-alpha04" tabindex="-1">Version 1.4.0-alpha04</h3> <p>January 11, 2023</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.4.0-alpha04</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.4.0-alpha04</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.4.0-alpha04</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/047e199bdcb8a5cd744cc7a2f986631bfb350ec7..adf1c279a86ab3886e1666c08e2c3efba783367b/compose/animation">Version 1.4.0-alpha04 contains these commits.</a></p> <p><strong>New Features</strong></p> <ul> <li>Tooling label is supported in <code translate="no" dir="ltr">rememberInfiniteTransition</code> and all the extension functions on <code translate="no" dir="ltr">InfiniteTransition</code> and <code translate="no" dir="ltr">Transition</code> (e.g. <code translate="no" dir="ltr">InfiniteTransition#animateColor</code>) (<a href="https://android-review.googlesource.com/#/q/I56ef7627431ba19c7462719e2be3af7245249573">I56ef7</a>)</li> </ul> <p><strong>API Changes</strong></p> <ul> <li><code translate="no" dir="ltr">InfiniteTransition#TransitionAnimationState</code> and <code translate="no" dir="ltr">InfiniteTransition#animations</code> APIs are now public. (<a href="https://android-review.googlesource.com/#/q/I366825fb1f87ae8b2816645e9852174cb6f31cdd">I36682</a>)</li> </ul> <h3 id="1.4.0-alpha03" data-text="Version 1.4.0-alpha03" tabindex="-1">Version 1.4.0-alpha03</h3> <p>December 7, 2022</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.4.0-alpha03</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.4.0-alpha03</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.4.0-alpha03</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/a1e318590b217ecfce1b2de17eed2f18b6a680bb..047e199bdcb8a5cd744cc7a2f986631bfb350ec7/compose/animation">Version 1.4.0-alpha03 contains these commits.</a></p> <p><strong>API Changes</strong></p> <ul> <li>In UI tests using a Compose rule, continuations resumed during <code translate="no" dir="ltr">withFrameNanos</code> callbacks will not be dispatched until after all frame callbacks have finished running. This matches the behavior of compose when running normally. However, tests that rely on the old behavior may fail. This should only affect code that calls <code translate="no" dir="ltr">withFrameNanos</code> or <code translate="no" dir="ltr">withFrameMillis</code> directly, and has logic outside of callback passed to those functions that may need to be moved inside the callbacks. See the animation test changes in <a href="https://android-review.googlesource.com/#/q/Idb41309445a030c91e8e4ae05daa9642b450505c">this CL for examples</a>.</li> <li>Added optional <code translate="no" dir="ltr">onPerformTraversals: (Long) -> Unit</code> parameter to <code translate="no" dir="ltr">TestMonotonicFrameClock</code> constructor and factory function to run code after <code translate="no" dir="ltr">withFrameNanos</code> callbacks but before resuming callers' coroutines. (<a href="https://android-review.googlesource.com/#/q/Idb41309445a030c91e8e4ae05daa9642b450505c">Idb413</a>, <a href="https://issuetracker.google.com/issues/254115946">b/254115946</a>, <a href="https://issuetracker.google.com/issues/222093277">b/222093277</a>, <a href="https://issuetracker.google.com/issues/255802670">b/255802670</a>)</li> <li>New param in <code translate="no" dir="ltr">AnimatedContent</code> for tooling label (<a href="https://android-review.googlesource.com/#/q/Iebe2d30122367bdd626063c15cbd17fcfb049023">Iebe2d</a>)</li> </ul> <h3 id="1.4.0-alpha02" data-text="Version 1.4.0-alpha02" tabindex="-1">Version 1.4.0-alpha02</h3> <p>November 9, 2022</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.4.0-alpha02</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.4.0-alpha02</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.4.0-alpha02</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/548c8ac2570ae6cf15798fea1380491f7d93796b..a1e318590b217ecfce1b2de17eed2f18b6a680bb/compose/animation">Version 1.4.0-alpha02 contains these commits.</a></p> <p><strong>API Changes</strong></p> <ul> <li>Add <code translate="no" dir="ltr">ToolingState</code> to allow tooling to change internal states of Composable (<a href="https://android-review.googlesource.com/#/q/Ie66147788cfde7ede84a94d9591b3a05c51209cb">Ie6614</a>)</li> </ul> <h3 id="1.4.0-alpha01" data-text="Version 1.4.0-alpha01" tabindex="-1">Version 1.4.0-alpha01</h3> <p>October 24, 2022</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.4.0-alpha01</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.4.0-alpha01</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.4.0-alpha01</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/3c2d5397fb8ef697bb04bfc7e98721e2dc0aa255..548c8ac2570ae6cf15798fea1380491f7d93796b/compose/animation">Version 1.4.0-alpha01 contains these commits.</a></p> <p><strong>Bug Fixes</strong></p> <ul> <li>Fix incorrect interruption animation in AnimatedContent (<a href="https://issuetracker.google.com/238662479">b/238662479</a>)</li> </ul> <h2 id="version_13_2" data-text="Version 1.3" tabindex="-1">Version 1.3</h2> <h3 id="1.3.3" data-text="Version 1.3.3" tabindex="-1">Version 1.3.3</h3> <p>January 11, 2023</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.3.3</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.3.3</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.3.3</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/8476d588d4975cb86be01bf4e356c5605ad89d48..59e93356f8f2bfb40b6f56dc086c8b821bbebda6/compose/animation">Version 1.3.3 contains these commits.</a></p> <ul> <li>No changes since the 1.3.2.</li> </ul> <h3 id="1.3.2" data-text="Version 1.3.2" tabindex="-1">Version 1.3.2</h3> <p>December 7, 2022</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.3.2</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.3.2</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.3.2</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/d29f2a87e3c1d5cb6dfde828400d67b6f161be63..8476d588d4975cb86be01bf4e356c5605ad89d48/compose/animation">Version 1.3.2 contains these commits.</a></p> <p><strong>Bug Fixes</strong></p> <ul> <li>Updated to support androidx.compose.ui 1.3.2</li> </ul> <h3 id="1.3.1" data-text="Version 1.3.1" tabindex="-1">Version 1.3.1</h3> <p>November 9, 2022</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.3.1</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.3.1</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.3.1</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/b5cb4dae1f526ce2408f450b50ade8708684b2be..d29f2a87e3c1d5cb6dfde828400d67b6f161be63/compose/animation">Version 1.3.1 contains these commits.</a></p> <h3 id="1.3.0" data-text="Version 1.3.0" tabindex="-1">Version 1.3.0</h3> <p>October 24, 2022</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.3.0</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.3.0</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.3.0</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/e6ab75d133443eb5c1d92f910f625741041fc591..b5cb4dae1f526ce2408f450b50ade8708684b2be/compose/animation">Version 1.3.0 contains these commits.</a></p> <p><strong>Important changes since 1.2.0</strong></p> <ul> <li>New set of easing functions are made stable</li> </ul> <h3 id="1.3.0-rc01" data-text="Version 1.3.0-rc01" tabindex="-1">Version 1.3.0-rc01</h3> <p>October 5, 2022</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.3.0-rc01</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.3.0-rc01</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.3.0-rc01</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/bdce26bd7556b92d2d4d2af3de881dd8e2c51459..e6ab75d133443eb5c1d92f910f625741041fc591/compose/animation">Version 1.3.0-rc01 contains these commits.</a></p> <h3 id="1.3.0-beta03" data-text="Version 1.3.0-beta03" tabindex="-1">Version 1.3.0-beta03</h3> <p>September 21, 2022</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.3.0-beta03</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.3.0-beta03</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.3.0-beta03</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/cce7b70f6a5ebf955cf748a73c18b63228b22c74..bdce26bd7556b92d2d4d2af3de881dd8e2c51459/compose/animation">Version 1.3.0-beta03 contains these commits.</a></p> <ul> <li>No changes since 1.3.0-beta02.</li> </ul> <h3 id="1.3.0-beta02" data-text="Version 1.3.0-beta02" tabindex="-1">Version 1.3.0-beta02</h3> <p>September 7, 2022</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.3.0-beta02</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.3.0-beta02</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.3.0-beta02</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/d9910e143f859716fd850a1f0036147622d6089b..cce7b70f6a5ebf955cf748a73c18b63228b22c74/compose/animation">Version 1.3.0-beta02 contains these commits.</a></p> <ul> <li>Removed Kotlin.experimental from the compiler options since it is depricated</li> </ul> <h3 id="1.3.0-beta01" data-text="Version 1.3.0-beta01" tabindex="-1">Version 1.3.0-beta01</h3> <p>August 24, 2022</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.3.0-beta01</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.3.0-beta01</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.3.0-beta01</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/bea814b246f89ff7244e3c6b0648f0b57e47897c..d9910e143f859716fd850a1f0036147622d6089b/compose/animation">Version 1.3.0-beta01 contains these commits.</a></p> <h3 id="1.3.0-alpha03" data-text="Version 1.3.0-alpha03" tabindex="-1">Version 1.3.0-alpha03</h3> <p>August 10, 2022</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.3.0-alpha03</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.3.0-alpha03</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.3.0-alpha03</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/a7f0710ad21f556f0dde9bf7bdab6d2135170fd4..bea814b246f89ff7244e3c6b0648f0b57e47897c/compose/animation">Version 1.3.0-alpha03 contains these commits.</a></p> <p><strong>API Changes</strong></p> <ul> <li>New param in <code translate="no" dir="ltr">Crossfade</code>, <code translate="no" dir="ltr">animateAsState</code> and <code translate="no" dir="ltr">Animatable</code> for tooling label (<a href="https://android-review.googlesource.com/#/q/Iac08a13e7e685108821e311abcbd808537bfcd7b">Iac08a</a>)</li> <li>Added <code translate="no" dir="ltr">atFraction</code> function for defining keyframes at a fraction instead of at a specific duration. (<a href="https://android-review.googlesource.com/#/q/I20c7687134349bcd9a07a18bd4523b24b7f121d6">I20c76</a>, <a href="https://issuetracker.google.com/issues/232059455">b/232059455</a>)</li> </ul> <h3 id="1.3.0-alpha02" data-text="Version 1.3.0-alpha02" tabindex="-1">Version 1.3.0-alpha02</h3> <p>July 27, 2022</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.3.0-alpha02</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.3.0-alpha02</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.3.0-alpha02</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/8094b683499b4098092c01028b55a38b49e357f2..a7f0710ad21f556f0dde9bf7bdab6d2135170fd4/compose/animation">Version 1.3.0-alpha02 contains these commits.</a></p> <h3 id="1.3.0-alpha01" data-text="Version 1.3.0-alpha01" tabindex="-1">Version 1.3.0-alpha01</h3> <p>June 29, 2022</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.3.0-alpha01</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.3.0-alpha01</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.3.0-alpha01</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/8328bd32e5ca96bc5a53d6369130e856cd2ca80b..8094b683499b4098092c01028b55a38b49e357f2/compose/animation">Version 1.3.0-alpha01 contains these commits.</a></p> <p><strong>API Changes</strong></p> <ul> <li>New <code translate="no" dir="ltr">LookaheadLayout</code> that supports a lookahead pass before the actual measure/layout. This allows a pre-calculation of the layout when it changes, while permitting the post-lookahead measure/layout to use the pre-calculated size/position to animate the size and positions towards the target. <code translate="no" dir="ltr">SubcomposeLayouts</code> are not yet supported, but will be in an upcoming release. (<a href="https://android-review.googlesource.com/#/q/I477f57d1f9efeb0aafd9fb509a2cac0ad8edfaf8">I477f5</a>)</li> </ul> <h2 id="version_12_2" data-text="Version 1.2" tabindex="-1">Version 1.2</h2> <h3 id="1.2.1" data-text="Version 1.2.1" tabindex="-1">Version 1.2.1</h3> <p>August 10, 2022</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.2.1</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.2.1</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.2.1</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/1e0793130863c72dc4a2d02bc975128f3ef0158b..3c2d5397fb8ef697bb04bfc7e98721e2dc0aa255/compose/animation">Version 1.2.1 contains these commits.</a></p> <h3 id="1.2.0" data-text="Version 1.2.0" tabindex="-1">Version 1.2.0</h3> <p>July 27, 2022</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.2.0</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.2.0</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.2.0</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/7ff668d1061ec9e732d65ec3bfa9dc3db50fd87a..1e0793130863c72dc4a2d02bc975128f3ef0158b/compose/animation">Version 1.2.0 contains these commits.</a></p> <p><strong>Important changes since 1.1.0</strong></p> <ul> <li>Compose animation now supports 'Animator duration scale' setting from Developer Options.</li> <li>A large selection of new experimental easing curves.</li> <li><code translate="no" dir="ltr">AnimatedImageVector</code> now supports <code translate="no" dir="ltr">repeatCount</code> and <code translate="no" dir="ltr">repeatMode</code></li> </ul> <h3 id="1.2.0-rc03" data-text="Version 1.2.0-rc03" tabindex="-1">Version 1.2.0-rc03</h3> <p>June 29, 2022</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.2.0-rc03</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.2.0-rc03</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.2.0-rc03</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/8328bd32e5ca96bc5a53d6369130e856cd2ca80b..e8af23f4f30713a3f6073d57558e7cde0f3056e9/compose/animation">Version 1.2.0-rc03 contains these commits.</a></p> <ul> <li>No changes since 1.2.0-rc02.</li> </ul> <h3 id="1.2.0-rc02" data-text="Version 1.2.0-rc02" tabindex="-1">Version 1.2.0-rc02</h3> <p>June 22, 2022</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.2.0-rc02</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.2.0-rc02</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.2.0-rc02</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/2d8badfd263991345376562fc0f247bc76ca6312..8328bd32e5ca96bc5a53d6369130e856cd2ca80b/compose/animation">Version 1.2.0-rc02 contains these commits.</a></p> <p><strong>Bug Fixes</strong></p> <ul> <li>Removed <code translate="no" dir="ltr">ExperimentalEasingApi</code> annotation on Easing functions (<a href="https://android-review.googlesource.com/#/q/Ied4417b953ec8b423e06ae0efeef909f0f150e98">Ied441</a>)</li> </ul> <h3 id="1.2.0-rc01" data-text="Version 1.2.0-rc01" tabindex="-1">Version 1.2.0-rc01</h3> <p>June 15, 2022</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.2.0-rc01</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.2.0-rc01</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.2.0-rc01</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/5973fd35e79471563d11a6776b6a1816b1e33409..2d8badfd263991345376562fc0f247bc76ca6312/compose/animation">Version 1.2.0-rc01 contains these commits.</a></p> <p><strong>API Changes</strong></p> <ul> <li>Interfaces in compose libraries are now built using jdk8 default interface methods (<a href="https://android-review.googlesource.com/#/q/I5bcf197603f66ec66177c98c01c3fe4868d60997">I5bcf1</a>)</li> </ul> <h3 id="1.2.0-beta03" data-text="Version 1.2.0-beta03" tabindex="-1">Version 1.2.0-beta03</h3> <p>June 1, 2022</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.2.0-beta03</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.2.0-beta03</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.2.0-beta03</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/6266a22ad9adaed6fa88fe98aa8adaa46eb96ccc..7cbb37cc779160b89644d03e042c129d0ce025d2/compose/animation">Version 1.2.0-beta03 contains these commits.</a></p> <p><strong>API Changes</strong></p> <ul> <li>Added Experimental Easing Curves for Animations (<a href="https://android-review.googlesource.com/#/q/I64a38836fbc396088ce965ea7c123abb50ed40f6">I64a38</a>)</li> </ul> <h3 id="1.2.0-beta02" data-text="Version 1.2.0-beta02" tabindex="-1">Version 1.2.0-beta02</h3> <p>May 18, 2022</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.2.0-beta02</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.2.0-beta02</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.2.0-beta02</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/eea19c54f6d94f1c234c4305c1329f7f1427867a..6266a22ad9adaed6fa88fe98aa8adaa46eb96ccc/compose/animation">Version 1.2.0-beta02 contains these commits.</a></p> <h3 id="1.2.0-beta01" data-text="Version 1.2.0-beta01" tabindex="-1">Version 1.2.0-beta01</h3> <p>May 11, 2022</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.2.0-beta01</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.2.0-beta01</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.2.0-beta01</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/41a4e31408842caa2b58db5e4ee6ec708464425f..eea19c54f6d94f1c234c4305c1329f7f1427867a/compose/animation">Version 1.2.0-beta01 contains these commits.</a></p> <ul> <li>This is the first beta release of 1.2! There are no changes since the last alpha.</li> </ul> <h3 id="1.2.0-alpha08" data-text="Version 1.2.0-alpha08" tabindex="-1">Version 1.2.0-alpha08</h3> <p>April 20, 2022</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.2.0-alpha08</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.2.0-alpha08</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.2.0-alpha08</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/7ca43e00a517eaeeedc0a21f482b17f06e3d2181..41a4e31408842caa2b58db5e4ee6ec708464425f/compose/animation">Version 1.2.0-alpha08 contains these commits.</a></p> <h3 id="1.2.0-alpha07" data-text="Version 1.2.0-alpha07" tabindex="-1">Version 1.2.0-alpha07</h3> <p>April 6, 2022</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.2.0-alpha07</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.2.0-alpha07</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.2.0-alpha07</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/5ef5671233460b844828e14a816255dbf7904868..7ca43e00a517eaeeedc0a21f482b17f06e3d2181/compose/animation">Version 1.2.0-alpha07 contains these commits.</a></p> <p><strong>API Changes</strong></p> <ul> <li><code translate="no" dir="ltr">AnimatedImageVector</code> now supports <code translate="no" dir="ltr">repeatCount</code> and <code translate="no" dir="ltr">repeatMode</code> (<a href="https://android-review.googlesource.com/#/q/Ia3e75fe74f9552c2a1ce4a0995d781009b7a5257">Ia3e75</a>, <a href="https://issuetracker.google.com/issues/199304067">b/199304067</a>)</li> </ul> <h3 id="1.2.0-alpha06" data-text="Version 1.2.0-alpha06" tabindex="-1">Version 1.2.0-alpha06</h3> <p>March 23, 2022</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.2.0-alpha06</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.2.0-alpha06</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.2.0-alpha06</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/33cb12e8aba043a05b40470a5ef3be1b35114fd5..5ef5671233460b844828e14a816255dbf7904868/compose/animation">Version 1.2.0-alpha06 contains these commits.</a></p> <p><strong>API Changes</strong></p> <ul> <li>Updated parsing of vector drawables to support auto mirroring to flip the content of a <code translate="no" dir="ltr">VectorPainter</code> if the current layout direction is RTL. (<a href="https://android-review.googlesource.com/#/q/I79cd946811e9b06ff4186180c4f8eaa0dcdbc879">I79cd9</a>, <a href="https://issuetracker.google.com/issues/185760237">b/185760237</a>)</li> </ul> <p><strong>Bug Fixes</strong></p> <ul> <li>Updated Vector graphics APIs to use the proper composable annotation <code translate="no" dir="ltr">@VectorComposable</code> instead of <code translate="no" dir="ltr">@UiComposable</code> (<a href="https://android-review.googlesource.com/#/q/I942bccda1a1795a7f85143524db80c1fc13bc0b9">I942bc</a>)</li> </ul> <h3 id="1.2.0-alpha05" data-text="Version 1.2.0-alpha05" tabindex="-1">Version 1.2.0-alpha05</h3> <p>March 9, 2022</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.2.0-alpha05</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.2.0-alpha05</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.2.0-alpha05</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/9b2b3d8efd5f00bd4af903bbaa926f6a712d0bd8..33cb12e8aba043a05b40470a5ef3be1b35114fd5/compose/animation">Version 1.2.0-alpha05 contains these commits.</a></p> <p><strong>API Changes</strong></p> <ul> <li>Hooray! Compose animation now supports 'Animator duration scale' setting from Developer Options. (<a href="https://android-review.googlesource.com/#/q/I5a4fc779a3fbfbcb2926ac1624cd679bb9b912ce">I5a4fc</a>, <a href="https://issuetracker.google.com/issues/161675988">b/161675988</a>)</li> </ul> <h3 id="1.2.0-alpha04" data-text="Version 1.2.0-alpha04" tabindex="-1">Version 1.2.0-alpha04</h3> <p>February 23, 2022</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.2.0-alpha04</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.2.0-alpha04</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.2.0-alpha04</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/db2ecbef194afcddfaede22e1d884a8959a9277c..9b2b3d8efd5f00bd4af903bbaa926f6a712d0bd8/compose/animation">Version 1.2.0-alpha04 contains these commits.</a></p> <h3 id="1.2.0-alpha03" data-text="Version 1.2.0-alpha03" tabindex="-1">Version 1.2.0-alpha03</h3> <p>February 9, 2022</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.2.0-alpha03</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.2.0-alpha03</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.2.0-alpha03</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/9dceceb54300ed028a7e8fc7a3454f270337ffde..db2ecbef194afcddfaede22e1d884a8959a9277c/compose/animation">Version 1.2.0-alpha03 contains these commits.</a></p> <h3 id="1.2.0-alpha02" data-text="Version 1.2.0-alpha02" tabindex="-1">Version 1.2.0-alpha02</h3> <p>January 26, 2022</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.2.0-alpha02</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.2.0-alpha02</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.2.0-alpha02</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/f09f3e0f47cacc65a631115deac08ee8cc132ceb..9dceceb54300ed028a7e8fc7a3454f270337ffde/compose/animation">Version 1.2.0-alpha02 contains these commits.</a></p> <h3 id="1.2.0-alpha01" data-text="Version 1.2.0-alpha01" tabindex="-1">Version 1.2.0-alpha01</h3> <p>January 12, 2022</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.2.0-alpha01</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.2.0-alpha01</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.2.0-alpha01</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/75784ce6dbac6faa5320e5898e9472f02ab8710c..f09f3e0f47cacc65a631115deac08ee8cc132ceb/compose/animation">Version 1.2.0-alpha01 contains these commits.</a></p> <p><strong>API Changes</strong></p> <ul> <li>Use <code translate="no" dir="ltr">AnimatedImageVector.animatedVectorResource</code> instead of <code translate="no" dir="ltr">animatedVectorResource</code> to load an <code translate="no" dir="ltr"><animated-vector></code> resource file. <ul> <li>Use <code translate="no" dir="ltr">rememberAnimatedVectorResource</code> instead of <code translate="no" dir="ltr">AnimatedImageVector#painterFor</code> to render an <code translate="no" dir="ltr">AnimatedImageVector</code>. (<a href="https://android-review.googlesource.com/#/q/I9c3000cdfcfc571394431e44f4642a0233542990">I9c300</a>)</li> </ul></li> </ul> <p><strong>Bug Fixes</strong></p> <ul> <li>Add toString methods to Animatable and AnimationResult. (<a href="https://android-review.googlesource.com/#/q/Icd3a67ac43b4446d62ddd5fd207a2d5ece86df0a">Icd3a6</a>)</li> </ul> <p><strong>Dependency Updates</strong></p> <ul> <li>Now depends on Kotlin <code translate="no" dir="ltr">1.6.10</code>.</li> </ul> <h2 id="version_11_2" data-text="Version 1.1" tabindex="-1">Version 1.1</h2> <h3 id="1.1.1" data-text="Version 1.1.1" tabindex="-1">Version 1.1.1</h3> <p>February 23, 2022</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.1.1</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.1.1</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.1.1</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/f9e9589a03c4b53f4401cc0cb8f763526fb885c7..564504df2d2c03ea9d48f868e09764418772a8a7/compose/animation">Version 1.1.1 contains these commits.</a></p> <p><strong>Bug Fixes</strong></p> <ul> <li>Fix <code translate="no" dir="ltr">NullPointerException</code> at <code translate="no" dir="ltr">androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList</code> (<a href="https://android-review.googlesource.com/c/platform/frameworks/support/+/1947059">aosp/1947059</a>, <a href="https://issuetracker.google.com/issues/206677462">b/206677462</a>)</li> <li>Fix crash caused by clipboard content while reading from clipboard on Android. (<a href="https://android-review.googlesource.com/#/q/I0602066750e3fce55deceb709f8c04ee9a71dabf">I06020</a>, <a href="https://issuetracker.google.com/issues/197769306">b/197769306</a>)</li> <li>Fixed RTL in <code translate="no" dir="ltr">LazyVerticalGrid</code> (<a href="https://android-review.googlesource.com/c/platform/frameworks/support/+/1931080">aosp/1931080</a>, <a href="https://issuetracker.google.com/issues/207510535">b/207510535</a>)</li> </ul> <h3 id="1.1.0" data-text="Version 1.1.0" tabindex="-1">Version 1.1.0</h3> <p>February 9, 2022</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.1.0</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.1.0</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.1.0</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/0310f2e9c177573a16c2d594fffabaada9b446ea..f9e9589a03c4b53f4401cc0cb8f763526fb885c7/compose/animation">Version 1.1.0 contains these commits.</a></p> <p><strong>Important changes since 1.0.0</strong></p> <ul> <li>Stable support for the Android 12 <a href="https://android-review.googlesource.com/c/platform/frameworks/support/+/1795727/">Overscroll effect</a></li> <li>Improvements to touch target sizing</li> <li>Note that, with respect to Compose 1.0, Material components will expand their layout space to meet Material <a href="https://material.io/design/usability/accessibility.html">accessibility guidelines</a> for <a href="https://material.io/design/usability/accessibility.html#layout-and-typography">touch target size</a>. For instance, Button touch target will expand to a minimum size of 48x48dp, even if you set the Button's size to be smaller. This aligns Compose Material to the same behavior of Material Design Components, providing consistent behavior if you mix Views and Compose. This change also ensures that when you create your UI using Compose Material components, minimum requirements for touch target accessibility will be met.</li> <li>Stable support for <a href="/reference/kotlin/androidx/compose/material3/package-summary#navigationrail">Navigation Rail</a></li> <li>Graduates a number of previously experimental APIs to stable</li> <li><a href="/jetpack/androidx/releases/compose-kotlin">Support</a> for newer versions of Kotlin</li> </ul> <h3 id="1.1.0-rc03" data-text="Version 1.1.0-rc03" tabindex="-1">Version 1.1.0-rc03</h3> <p>January 26, 2022</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.1.0-rc03</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.1.0-rc03</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.1.0-rc03</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/8b1e748d80de10c087ce57eaaa93cd209cccebad..0310f2e9c177573a16c2d594fffabaada9b446ea/compose/animation">Version 1.1.0-rc03 contains these commits.</a></p> <p><strong>Bug Fixes</strong></p> <ul> <li>Updated to support Compose Material 1.1.0-rc03</li> </ul> <h3 id="1.1.0-rc01" data-text="Version 1.1.0-rc01" tabindex="-1">Version 1.1.0-rc01</h3> <p>December 15, 2021</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.1.0-rc01</code> and <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.1.0-rc01</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/75784ce6dbac6faa5320e5898e9472f02ab8710c..8b1e748d80de10c087ce57eaaa93cd209cccebad/compose/animation">Version 1.1.0-rc01 contains these commits.</a></p> <p><strong>API Changes</strong></p> <ul> <li>Use <code translate="no" dir="ltr">AnimatedImageVector.animatedVectorResource</code> instead of <code translate="no" dir="ltr">animatedVectorResource</code> to load an <code translate="no" dir="ltr"><animated-vector></code> resource file. <ul> <li>Use <code translate="no" dir="ltr">rememberAnimatedVectorResource</code> instead of <code translate="no" dir="ltr">AnimatedImageVector#painterFor</code> to render an <code translate="no" dir="ltr">AnimatedImageVector</code>. (<a href="https://android-review.googlesource.com/#/q/I9c3000cdfcfc571394431e44f4642a0233542990">I9c300</a>)</li> </ul></li> </ul> <h3 id="1.1.0-beta04" data-text="Version 1.1.0-beta04" tabindex="-1">Version 1.1.0-beta04</h3> <p>December 1, 2021</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.1.0-beta04</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.1.0-beta04</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.1.0-beta04</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/9fee5f6a2093713639af8853adbf898f7b609969..75784ce6dbac6faa5320e5898e9472f02ab8710c/compose/animation">Version 1.1.0-beta04 contains these commits.</a></p> <p><strong>New Features</strong></p> <ul> <li>Updated to be compatible with Kotlin <code translate="no" dir="ltr">1.6.0</code></li> </ul> <h3 id="1.1.0-beta03" data-text="Version 1.1.0-beta03" tabindex="-1">Version 1.1.0-beta03</h3> <p>November 17, 2021</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.1.0-beta03</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.1.0-beta03</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.1.0-beta03</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/f07d12061370a603549747200c79b60239706330..cc1240d00b28657ee0c1a937f60430eaf1b03b09/compose/animation">Version 1.1.0-beta03 contains these commits.</a></p> <p><strong>API Changes</strong></p> <ul> <li>Added new modifier Modifier.onPlaced to allow placement change to be observed. Additional changes to child modifier's offset can therefore be made based on the observed placement change. (<a href="https://android-review.googlesource.com/#/q/I558fd6a0fc0788942efe09a6c3e33c6c62608904">I558fd</a>)</li> <li><p>New support for contentKey in Crossfade. ContentKey will be used for equality check by animation system. Therefore custom diffing on states can be achieved via specifying appropriate contentKey for different states.</p> <p>ContentKey will also be used as the key for save & restore content. (<a href="https://android-review.googlesource.com/#/q/I2e055c2b42736633b544b653e9815255578e7169">I2e055</a>, <a href="https://issuetracker.google.com/issues/197907070">b/197907070</a>)</p></li> </ul> <h3 id="1.1.0-beta02" data-text="Version 1.1.0-beta02" tabindex="-1">Version 1.1.0-beta02</h3> <p>November 3, 2021</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.1.0-beta02</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.1.0-beta02</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.1.0-beta02</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/92af5b17ecee9d3c62f59e98b483e411c390f51b..f07d12061370a603549747200c79b60239706330/compose/animation">Version 1.1.0-beta02 contains these commits.</a></p> <p><strong>Bug Fixes</strong></p> <ul> <li>New animation APIs for supporting tooling. Specifically, they allow tooling to inspect the animations & their configurations in a Transitions. (<a href="https://android-review.googlesource.com/#/q/I4116e0f930fdbbbf3c306e1c2aa32b71b257bd3d">I4116e</a>)</li> </ul> <h3 id="1.1.0-beta01" data-text="Version 1.1.0-beta01" tabindex="-1">Version 1.1.0-beta01</h3> <p>October 27, 2021</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.1.0-beta01</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.1.0-beta01</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.1.0-beta01</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/db0888af4fa9a8eaeaf55cc1f120724bc67bdb20..92af5b17ecee9d3c62f59e98b483e411c390f51b/compose/animation">Version 1.1.0-beta01 contains these commits.</a></p> <p><strong>API Changes</strong></p> <ul> <li>New animation APIs for supporting tooling. Specifically, they allow tooling to inspect the animations & their configurations in a Transitions. (<a href="https://android-review.googlesource.com/#/q/I4116e0f930fdbbbf3c306e1c2aa32b71b257bd3d">I4116e</a>)</li> </ul> <h3 id="1.1.0-alpha06" data-text="Version 1.1.0-alpha06" tabindex="-1">Version 1.1.0-alpha06</h3> <p>October 13, 2021</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.1.0-alpha06</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.1.0-alpha06</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.1.0-alpha06</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/da9716386798fc4e39075f54e5bd3317384a63e6..db0888af4fa9a8eaeaf55cc1f120724bc67bdb20/compose/animation">Version 1.1.0-alpha06 contains these commits.</a></p> <h3 id="1.1.0-alpha05" data-text="Version 1.1.0-alpha05" tabindex="-1">Version 1.1.0-alpha05</h3> <p>September 29, 2021</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.1.0-alpha05</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.1.0-alpha05</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.1.0-alpha05</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/1a3dcfb231517d6104969f17063fcc6c97ba6eeb..da9716386798fc4e39075f54e5bd3317384a63e6/compose/animation">Version 1.1.0-alpha05 contains these commits.</a></p> <p><strong>API Changes</strong></p> <ul> <li><p><code translate="no" dir="ltr">EnterTransition</code>, <code translate="no" dir="ltr">ExitTransition</code>, and some of the <code translate="no" dir="ltr">AnimatedVisibility</code> APIs have been made stable. <code translate="no" dir="ltr">MutableTransitionState.isIdle</code> is also no longer experimental. (<a href="https://android-review.googlesource.com/#/q/I5072db0fff64678b726a90670668d1dc274cadab">I5072d</a>)</p></li> <li><p><strong>Breaking change</strong>: lambdas in Enter/ExitTransition factories have been moved to the last position in the param list. (<a href="https://android-review.googlesource.com/#/q/I5072db0fff64678b726a90670668d1dc274cadab">I5072d</a>)</p></li> </ul> <h3 id="1.1.0-alpha04" data-text="Version 1.1.0-alpha04" tabindex="-1">Version 1.1.0-alpha04</h3> <p>September 15, 2021</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.1.0-alpha04</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.1.0-alpha04</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.1.0-alpha04</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/bf63d633b292368932b7ea1994e4116f95a94b5c..1a3dcfb231517d6104969f17063fcc6c97ba6eeb/compose/animation">Version 1.1.0-alpha04 contains these commits.</a></p> <h3 id="1.1.0-alpha03" data-text="Version 1.1.0-alpha03" tabindex="-1">Version 1.1.0-alpha03</h3> <p>September 1, 2021</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.1.0-alpha03</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.1.0-alpha03</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.1.0-alpha03</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/1e0ab9e58c3c2ebe8152b7507938aef7e9c1acdc..bf63d633b292368932b7ea1994e4116f95a94b5c/compose/animation">Version 1.1.0-alpha03 contains these commits.</a></p> <p><strong>New Features</strong></p> <ul> <li>Updated Compose <code translate="no" dir="ltr">1.1.0-alpha03</code> to depend on Kotlin <code translate="no" dir="ltr">1.5.30</code>. (<a href="https://android-review.googlesource.com/#/q/I74545c317093029a2a46707b9024ad3385854ecb">I74545</a>)</li> </ul> <h3 id="1.1.0-alpha02" data-text="Version 1.1.0-alpha02" tabindex="-1">Version 1.1.0-alpha02</h3> <p>August 18, 2021</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.1.0-alpha02</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.1.0-alpha02</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.1.0-alpha02</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/d725303accfa9be6d5c3d61c7603ed1b9a780cbd..1e0ab9e58c3c2ebe8152b7507938aef7e9c1acdc/compose/animation">Version 1.1.0-alpha02 contains these commits.</a></p> <p><strong>API Changes</strong></p> <ul> <li>StartOffset is now supported in repeatable and infiniteRepeatable, as a way to delay the start time or fast forward the animation before the animation starts. This start offset will not be repeated (<a href="https://android-review.googlesource.com/#/q/Ic679f995fa5d118ae5bd50966bc9d775557e06df">Ic679f</a>, <a href="https://issuetracker.google.com/issues/195079908">b/195079908</a>)</li> <li>New Enter/Exit transition for scale. It can be used in combination with other types of Enter/ExitTransitions. (<a href="https://android-review.googlesource.com/#/q/I372dade56f09168b8d5450c897550b93dd819e53">I372da</a>, <a href="https://issuetracker.google.com/issues/191325593">b/191325593</a>)</li> </ul> <h3 id="1.1.0-alpha01" data-text="Version 1.1.0-alpha01" tabindex="-1">Version 1.1.0-alpha01</h3> <p>August 4, 2021</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.1.0-alpha01</code>, <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.1.0-alpha01</code>, and <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics:1.1.0-alpha01</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/1a3ba62b97c98d85f6c0ac2fb6483fc9ac60872e..d725303accfa9be6d5c3d61c7603ed1b9a780cbd/compose/animation">Version 1.1.0-alpha01 contains these commits.</a></p> <p><strong>API Changes</strong></p> <ul> <li><code translate="no" dir="ltr">AnimatedImageVector</code> and the related APIs are now in the new <code translate="no" dir="ltr">androidx.compose.animation:animation-graphics</code> module. (<a href="https://android-review.googlesource.com/#/q/I6087391a9869d2315a71422f24175f42ec085681">I60873</a>)</li> </ul> <p><strong>Bug Fixes</strong></p> <ul> <li>Moved <code translate="no" dir="ltr">InfiniteAnimationPolicy</code> to :compose:ui (<a href="https://android-review.googlesource.com/#/q/I5eb09c7aa24a85fd2e66cc9b84ea6c906dc5210a">I5eb09</a>, <a href="https://issuetracker.google.com/issues/160602714">b/160602714</a>)</li> </ul> <h2 id="version_10_2" data-text="Version 1.0" tabindex="-1">Version 1.0</h2> <h3 id="1.0.5" data-text="Version 1.0.5" tabindex="-1">Version 1.0.5</h3> <p>November 3, 2021</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.0.5</code> and <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.0.5</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/74486e447dc2667c6a4cc46b2963f40210ceb348..39088e9f5278a15516318bb8979517d532bfdac3/compose/animation">Version 1.0.5 contains these commits.</a></p> <p><strong>Bug Fixes</strong></p> <ul> <li>Fixed a crash tracking derivedStateOf instances. (<a href="https://android-review.googlesource.com/c/platform/frameworks/support/+/1792247">aosp/1792247</a>)</li> </ul> <h3 id="1.0.4" data-text="Version 1.0.4" tabindex="-1">Version 1.0.4</h3> <p>October 13, 2021</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.0.4</code> and <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.0.4</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/4b73eb10b9c34d4659d950c12ff23cf094d4d8c7..74486e447dc2667c6a4cc46b2963f40210ceb348/compose/animation">Version 1.0.4 contains these commits.</a></p> <p><strong>Dependency Updates</strong></p> <ul> <li>Updated to depend on Kotlin <code translate="no" dir="ltr">1.5.31</code></li> </ul> <h3 id="1.0.3" data-text="Version 1.0.3" tabindex="-1">Version 1.0.3</h3> <p>September 29, 2021</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.0.3</code> and <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.0.3</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/9c1876203334d14761d2c11e47c8191ef9107989..4b73eb10b9c34d4659d950c12ff23cf094d4d8c7/compose/animation">Version 1.0.3 contains these commits.</a></p> <p><strong>Dependency Updates</strong></p> <ul> <li>Updated to depend on Kotlin <code translate="no" dir="ltr">1.5.30</code></li> </ul> <h3 id="1.0.2" data-text="Version 1.0.2" tabindex="-1">Version 1.0.2</h3> <p>September 1, 2021</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.0.2</code> and <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.0.2</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/c076d3eb651533329571facecfb54dc72e1b0fc4..9c1876203334d14761d2c11e47c8191ef9107989/compose/animation">Version 1.0.2 contains these commits.</a></p> <p>Updated to support the Compose <code translate="no" dir="ltr">1.0.2</code> release. Compose <code translate="no" dir="ltr">1.0.2</code> is still compatible with Kotlin <code translate="no" dir="ltr">1.5.21</code>.</p> <h3 id="1.0.1" data-text="Version 1.0.1" tabindex="-1">Version 1.0.1</h3> <p>August 4, 2021</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.0.1</code> and <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.0.1</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/7077236bd50d5bf31068c8ac40302765010a0e56..c076d3eb651533329571facecfb54dc72e1b0fc4/compose/animation">Version 1.0.1 contains these commits.</a></p> <p><strong>Dependency Updates</strong></p> <ul> <li>Updated to depend on Kotlin <code translate="no" dir="ltr">1.5.21</code>.</li> </ul> <h3 id="1.0.0" data-text="Version 1.0.0" tabindex="-1">Version 1.0.0</h3> <p>July 28, 2021</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.0.0</code> and <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.0.0</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/abcc318573114e39365e63de4bea7736a81491af..7077236bd50d5bf31068c8ac40302765010a0e56/compose/animation">Version 1.0.0 contains these commits.</a></p> <p><strong>Major features of 1.0.0</strong></p> <p>This is the first stable release of Compose. Please see the official <a href="https://android-developers.googleblog.com/2021/07/jetpack-compose-announcement.html">Compose Release blog</a> for more details!</p> <p><strong>Known Issues</strong></p> <ul> <li><p>If you are using Android Studio Bumblebee Canary 4 or AGP <code translate="no" dir="ltr">7.1.0-alpha04</code>/<code translate="no" dir="ltr">7.1.0-alpha05</code>, you may hit the following crash:</p> <div></div><devsite-code><pre class="devsite-click-to-copy" translate="no" dir="ltr" is-upgraded syntax="Text only"><code translate="no" dir="ltr"> java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)" </code></pre></devsite-code> <p>To fix, temporarily increase your minSdkVersion to 24+ in your <code translate="no" dir="ltr">build.gradle</code> file. This issue will be fixed in the next version of Android Studio Bumblebee and AGP <code translate="no" dir="ltr">7.1</code>. (<a href="https://issuetracker.google.com/issues/194289155">b/194289155</a>)</p></li> </ul> <h3 id="1.0.0-rc02" data-text="Version 1.0.0-rc02" tabindex="-1">Version 1.0.0-rc02</h3> <p>July 14, 2021</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.0.0-rc02</code> and <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.0.0-rc02</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/1a3ba62b97c98d85f6c0ac2fb6483fc9ac60872e..abcc318573114e39365e63de4bea7736a81491af/compose/animation">Version 1.0.0-rc02 contains these commits.</a></p> <h3 id="1.0.0-rc01" data-text="Version 1.0.0-rc01" tabindex="-1">Version 1.0.0-rc01</h3> <p>July 1, 2021</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.0.0-rc01</code> and <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.0.0-rc01</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/f434dccf3dc4d4e82d8d965da3746615870537b4..1a3ba62b97c98d85f6c0ac2fb6483fc9ac60872e/compose/animation">Version 1.0.0-rc01 contains these commits.</a></p> <p><strong>Bug Fixes</strong></p> <ul> <li>Moved <code translate="no" dir="ltr">InfiniteAnimationPolicy</code> to <code translate="no" dir="ltr">androidx.compose.ui:ui</code> (<a href="https://android-review.googlesource.com/#/q/I5eb09c7aa24a85fd2e66cc9b84ea6c906dc5210a">I5eb09</a>, <a href="https://issuetracker.google.com/issues/160602714">b/160602714</a>)</li> </ul> <h3 id="1.0.0-beta09" data-text="Version 1.0.0-beta09" tabindex="-1">Version 1.0.0-beta09</h3> <p>June 16, 2021</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.0.0-beta09</code> and <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.0.0-beta09</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/836237c11d7a415f28bb71acab597579be1d5227..f434dccf3dc4d4e82d8d965da3746615870537b4/compose/animation">Version 1.0.0-beta09 contains these commits.</a></p> <p><strong>API Changes</strong></p> <ul> <li>New <code translate="no" dir="ltr">AnimatedContent</code> Composable. It manages its content change using customizable <code translate="no" dir="ltr">ContentTransform</code> as new target content enters and initial content leaves. Different combination of enter and exit transitions can be used to produce a customized look and feel. As a part of the content transform, <code translate="no" dir="ltr">AnimatedContent</code> automatically animates its size to match the incoming content. (<a href="https://android-review.googlesource.com/#/q/I2c3df9070957cc144b13b404848b7fe4717dd2b8">I2c3df</a>)</li> <li>Removed <code translate="no" dir="ltr">ManualFrameClock</code>. If you need to control animations, use <code translate="no" dir="ltr">composeTestRule.mainClock</code> instead. (<a href="https://android-review.googlesource.com/#/q/I3c3e8d0387c37ab3f3a29b648429056ac0eb6b26">I3c3e8</a>, <a href="https://issuetracker.google.com/issues/189951065">b/189951065</a>)</li> </ul> <p><strong>Added Profile Rules</strong></p> <p>This release adds profile rules to the following compose modules (<a href="https://android-review.googlesource.com/#/q/I14ed64578d535320a40ed8d486f75715641b2762">I14ed6</a>):</p> <ul> <li>androidx.compose.animation</li> <li>androidx.compose.animation-core</li> <li>androidx.compose.foundation</li> <li>androidx.compose.foundation-layout</li> <li>androidx.compose.material</li> <li>androidx.compose.material-ripple</li> <li>androidx.compose.runtime</li> <li>androidx.compose.ui</li> <li>androidx.compose.ui.geometry</li> <li>androidx.compose.ui.graphics</li> <li>androidx.compose.ui.text</li> <li>androidx.compose.ui.text</li> <li>androidx.compose.ui.unit</li> <li>androidx.compose.ui.util</li> </ul> <h4 id="what_are_profile_rules_2" data-text="What are profile rules?" tabindex="-1">What are profile rules?</h4> <ul> <li><p>Profile rules for a library are specified in a text file <code translate="no" dir="ltr">baseline-prof.txt</code> located in the <code translate="no" dir="ltr">src/main</code> or equivalent directory. The file specifies a rule per line, where a rule in this case is a pattern for matching to methods or classes in the library. The syntax for these rules is a superset of the human-readable ART profile format that is used when using <code translate="no" dir="ltr">adb shell profman --dump-classes-and-methods ...</code>. These rules take one of two forms to target either methods or classes.</p></li> <li><p>A method rule will have the following pattern:</p> <div></div><devsite-code><pre class="devsite-click-to-copy" translate="no" dir="ltr" is-upgraded syntax="Kotlin"><code translate="no" dir="ltr"><<span class="devsite-syntax-n">FLAGS><CLASS_DESCRIPTOR></span><span class="devsite-syntax-o">-</span>><<span class="devsite-syntax-n">METHOD_SIGNATURE</span>> </code></pre></devsite-code></li> <li><p>And a class rule will have the following pattern:</p> <div></div><devsite-code><pre class="devsite-click-to-copy" translate="no" dir="ltr" is-upgraded syntax="Kotlin"><code translate="no" dir="ltr"><<span class="devsite-syntax-n">CLASS_DESCRIPTOR</span>> </code></pre></devsite-code></li> <li><p>Here <code translate="no" dir="ltr"><FLAGS></code> is one or more of the characters <code translate="no" dir="ltr">H</code>, <code translate="no" dir="ltr">S</code>, and <code translate="no" dir="ltr">P</code> to indicate whether or not this method should be flagged as "Hot", "Startup", or "Post Startup".</p></li> <li><p>The <code translate="no" dir="ltr"><CLASS_DESCRIPTOR></code> is the descriptor for the class that the targeted method belongs to. For example, the class <code translate="no" dir="ltr">androidx.compose.runtime.SlotTable</code> would have a descriptor of <code translate="no" dir="ltr">Landroidx/compose/runtime/SlotTable;</code>.</p></li> <li><p>The <code translate="no" dir="ltr"><METHOD_SIGNATURE></code> is the signature of the method, and includes the name, parameter types, and return types of the method. For example, the method <code translate="no" dir="ltr">fun isPlaced(): Boolean</code> on <code translate="no" dir="ltr">LayoutNode</code> has the signature <code translate="no" dir="ltr">isPlaced()Z</code>.</p></li> <li><p>These patterns can have wildcards (<code translate="no" dir="ltr">**</code>, <code translate="no" dir="ltr">*</code>, and <code translate="no" dir="ltr">?</code>) in order to have a single rule encompass multiple methods or classes.</p></li> </ul> <h4 id="what_do_the_rules_do_2" data-text="What do the rules do?" tabindex="-1">What do the rules do?</h4> <ul> <li><p>A method that has the flag <code translate="no" dir="ltr">H</code> indicates that this method is a "hot" method, and should be compiled ahead of time.</p></li> <li><p>A method that has the flag <code translate="no" dir="ltr">S</code> indicates that it is a method which is called at startup, and should be compiled ahead of time to avoid the cost of compilation and interpreting the method at startup time.</p></li> <li><p>A method that has the flag <code translate="no" dir="ltr">P</code> indicates that it is a method which is called after startup.</p></li> <li><p>A class that is present in this file indicates that it is used during startup and should be pre-allocated in the heap to avoid the cost of class loading.</p></li> </ul> <h4 id="how_does_this_work_2" data-text="How does this work?" tabindex="-1">How does this work?</h4> <ul> <li>Libraries can define these rules which will be packaged in AAR artifacts. When an app is then built which includes these artifacts, these rules are merged together and the merged rules are used to build a compact binary ART profile that is specific to the app. ART can then leverage this profile when the app is installed on devices in order to ahead-of-time compile a specific subset of the application to improve the performance of the application, especially the first run. Note that this will have no effect on debuggable applications.</li> </ul> <h3 id="1.0.0-beta08" data-text="Version 1.0.0-beta08" tabindex="-1">Version 1.0.0-beta08</h3> <p>June 2, 2021</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.0.0-beta08</code> and <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.0.0-beta08</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/b648147c5fdfc5ecbad57e40e2dc0c69aa23bf12..86ff5b4bb956431ec884586ce0aea0127e189ec4/compose/animation">Version 1.0.0-beta08 contains these commits.</a></p> <p><strong>Bug Fixes</strong></p> <ul> <li>Now <code translate="no" dir="ltr">detectDragGesures</code>, <code translate="no" dir="ltr">detectVerticalGestures</code>, and <code translate="no" dir="ltr">detectHorizontalGestures</code> will consume the position change automatically, no need to call change.consumePositionChange in the onDrag callbacks (<a href="https://android-review.googlesource.com/#/q/I42fc4a6529f73db228ae671097d10a0cda0d834b">I42fc4</a>, <a href="https://issuetracker.google.com/issues/185096350">b/185096350</a>, <a href="https://issuetracker.google.com/issues/187320697">b/187320697</a>)</li> <li><code translate="no" dir="ltr">Modifier.onGloballyPositioned()</code> was changed to report the coordinates of this modifier in the modifier chain, not the layout coordinates after applying all the modifiers. This means that now the ordering of modifiers is affecting what coordinates would be reported. (<a href="https://android-review.googlesource.com/#/q/Ieb67da0c327c9dc323a4b0a8bf33dbb66f0611e3">Ieb67d</a>, <a href="https://issuetracker.google.com/issues/177926591">b/177926591</a>)</li> </ul> <h3 id="1.0.0-beta07" data-text="Version 1.0.0-beta07" tabindex="-1">Version 1.0.0-beta07</h3> <p>May 18, 2021</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.0.0-beta07</code> and <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.0.0-beta07</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/4c1927601bfcaaaf049d0fc7a4e5801ff5cf9729..b648147c5fdfc5ecbad57e40e2dc0c69aa23bf12/compose/animation">Version 1.0.0-beta07 contains these commits.</a></p> <aside class="note"><strong>Note:</strong><span> Libraries dependent on Compose will need to recompile with version <code translate="no" dir="ltr">1.0.0</code>‑<code translate="no" dir="ltr">beta07</code>. Otherwise, libraries may encounter a <code translate="no" dir="ltr">NoSuchMethodError</code>, such as:</br> <code translate="no" dir="ltr">java.lang.NoSuchMethodError: No interface method startReplaceableGroup(ILjava/lang/String;)V in class Landroidx/compose/runtime/Composer; or its super classes</code>. (<a href="https://android-review.googlesource.com/#/q/Ia34e699fdbeaeb86b74e9da27d79d186e6e71757">Ia34e6</a>)</span></aside> <p><strong>API Changes</strong></p> <ul> <li>New <code translate="no" dir="ltr">AnimatedVisibility</code> API that support visibility to be specified in a <code translate="no" dir="ltr">MutableTransitionState</code>. This also allows the animation states to be observed external to <code translate="no" dir="ltr">AnimatedVisibility</code> via <code translate="no" dir="ltr">currentState</code> and <code translate="no" dir="ltr">isIdle</code>. <ul> <li>New child transition support in Transition</li> <li>Support custom exit/enter transition animation in AnimatedVisibility using AnimationScope.transition</li> <li>New animateEnterExit modifier accessible for all children of AnimatedVisibility</li> <li>Deprecated the AnimatedVisibility APIs that take an <code translate="no" dir="ltr">initiallyVisible</code> parameter (<a href="https://android-review.googlesource.com/#/q/I702f3a6d948938130701e6ab91b77f0b6fe000c2">I702f3</a>)</li> </ul></li> </ul> <h3 id="1.0.0-beta06" data-text="Version 1.0.0-beta06" tabindex="-1">Version 1.0.0-beta06</h3> <p>May 5, 2021</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.0.0-beta06</code> and <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.0.0-beta06</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/b04f2c39ebb45a0480dc0dc04d7fb7406646eb5e..3d6f168394d1dd14e1d6f5b6dc4a0d405cb1a26a/compose/animation">Version 1.0.0-beta06 contains these commits.</a></p> <h3 id="1.0.0-beta05" data-text="Version 1.0.0-beta05" tabindex="-1">Version 1.0.0-beta05</h3> <p>April 21, 2021</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.0.0-beta05</code> and <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.0.0-beta05</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/0e6e72e136ada934db74265667417524ba0ba04f..4c1927601bfcaaaf049d0fc7a4e5801ff5cf9729/compose/animation">Version 1.0.0-beta05 contains these commits.</a></p> <p><strong>Bug Fixes</strong></p> <ul> <li>The AndroidManifest files from ui-test-manifest and ui-tooling-data are now compatible with Android 12 (<a href="https://android-review.googlesource.com/#/q/I6f9dec0515ad6eb7fd232eeb124ee0164f4e90cb">I6f9de</a>, <a href="https://issuetracker.google.com/issues/184718994">b/184718994</a>)</li> </ul> <h3 id="1.0.0-beta04" data-text="Version 1.0.0-beta04" tabindex="-1">Version 1.0.0-beta04</h3> <p>April 7, 2021</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.0.0-beta04</code> and <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.0.0-beta04</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/5c42896eb6591b09e3952030fb7ea8d9b8c42713..0e6e72e136ada934db74265667417524ba0ba04f/compose/animation">Version 1.0.0-beta04 contains these commits.</a></p> <p><strong>API Changes</strong></p> <ul> <li>Public instances of <code translate="no" dir="ltr">RowScope</code>, <code translate="no" dir="ltr">ColumnScope</code>, <code translate="no" dir="ltr">BoxScope</code>, <code translate="no" dir="ltr">BoxWithConstraintsScope</code> were removed. (<a href="https://android-review.googlesource.com/#/q/I4e83e38b3bb85be593288720e6b9cdbe0032bceb">I4e83e</a>, <a href="https://issuetracker.google.com/issues/181869067">b/181869067</a>)</li> </ul> <h3 id="1.0.0-beta03" data-text="Version 1.0.0-beta03" tabindex="-1">Version 1.0.0-beta03</h3> <p>March 24, 2021</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.0.0-beta03</code> and <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.0.0-beta03</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/52fbd7ed5b07ca4431fa828325a1f8da45b02e51..5c42896eb6591b09e3952030fb7ea8d9b8c42713/compose/animation">Version 1.0.0-beta03 contains these commits.</a></p> <h3 id="1.0.0-beta02" data-text="Version 1.0.0-beta02" tabindex="-1">Version 1.0.0-beta02</h3> <p>March 10, 2021</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.0.0-beta02</code> and <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.0.0-beta02</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/df134e0f94ac70e36764a70dc7fb6a083e0e0fab..52fbd7ed5b07ca4431fa828325a1f8da45b02e51/compose/animation">Version 1.0.0-beta02 contains these commits.</a></p> <p><strong>Bug Fixes</strong></p> <ul> <li>Enforce restrictions on public usage of experimental APIs (<a href="https://android-review.googlesource.com/#/q/I6aa29518ed4d6a3821d921d2ae1a300e31183dcc">I6aa29</a>, <a href="https://issuetracker.google.com/issues/174531520">b/174531520</a>)</li> </ul> <h3 id="1.0.0-beta01" data-text="Version 1.0.0-beta01" tabindex="-1">Version 1.0.0-beta01</h3> <p>February 24, 2021</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.0.0-beta01</code> and <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.0.0-beta01</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/9ed3262e0dfca1d352bdbf8f8e10253a61ef6218..4b6cff92e45f1d4467086aa2c6aa0248b4883950/compose/animation">Version 1.0.0-beta01 contains these commits.</a></p> <p>This is the first release of Compose 1.0.0 Beta.</p> <p><strong>API Changes</strong></p> <ul> <li><code translate="no" dir="ltr">InteractionState</code> has been replaced with <code translate="no" dir="ltr">[Mutable]InteractionSource</code> <ul> <li>Interfaces are responsible for emitting / collecting Interaction events.</li> <li>Instead of passing <code translate="no" dir="ltr">interactionState = remember { InteractionState() }</code> to components such as <code translate="no" dir="ltr">Button</code> and <code translate="no" dir="ltr">Modifier.clickable()</code>, use <code translate="no" dir="ltr">interactionSource = remember { MutableInteractionSource() }</code>.</li> <li>Instead of: <code translate="no" dir="ltr">Interaction.Pressed in interactionState</code> you should instead use the extension functions on InteractionSource, such as InteractionSource.collectIsPressedAsState().</li> <li>For complex use cases you can use InteractionSource.interactions to observe the stream of Interactions. See the InteractionSource documentation and samples for more information.</li> <li>(<a href="https://android-review.googlesource.com/#/q/I85965d0dba39d1740c097915d1d1a367eea2a78c">I85965</a>, <a href="https://issuetracker.google.com/issues/152525426">b/152525426</a>, <a href="https://issuetracker.google.com/issues/171913923">b/171913923</a>, <a href="https://issuetracker.google.com/issues/171710801">b/171710801</a>, <a href="https://issuetracker.google.com/issues/174852378">b/174852378</a>)</li> </ul></li> <li>smoothScrollBy and scrollBy methods' packages changed to <code translate="no" dir="ltr">androidx.compose.foundation.gestures.*</code> (<a href="https://android-review.googlesource.com/#/q/I3f7c18be72b1b4e8d7958194b10d63d749f7d948">I3f7c1</a>, <a href="https://issuetracker.google.com/issues/175294473">b/175294473</a>)</li> <li>Size modifiers were renamed. Modifier.width/height/size were renamed to requiredWidth/requiredHeight/requiredSize. Modifier.preferredWidth/preferredHeight/preferredSize were renamed to width/height/size. (<a href="https://android-review.googlesource.com/#/q/I5b4145953d360b1fb851c0056fc9a7875bb34088">I5b414</a>)</li> <li>Orientation has been moved to foundation package. VelocirtTracker moved from ui.gesture to ui.input.pointer. (<a href="https://android-review.googlesource.com/#/q/Iff4a887648735c4850dca0d8d95fd99d782d04bb">Iff4a8</a>, <a href="https://issuetracker.google.com/issues/175294473">b/175294473</a>)</li> <li>AnimationClockObservable and subclasses have been removed. AnimatedFloat has been removed. (<a href="https://android-review.googlesource.com/#/q/Icde5248072620b741bdf4d8cf59291e7b2994e6a">Icde52</a>, <a href="https://issuetracker.google.com/issues/177457083">b/177457083</a>)</li> <li>Modifier.draggable now accepts DraggableState instead of a simple lambda. you can create state via <code translate="no" dir="ltr">rememberDraggableState { delta -> }</code> to get the same behaviour as before (<a href="https://android-review.googlesource.com/#/q/Ica70f33e73b6691375c9bdf07d008bae7546d48a">Ica70f</a>, <a href="https://issuetracker.google.com/issues/175294473">b/175294473</a>)</li> <li>animate, animatedValue, AnimatedValue APIs have been removed (<a href="https://android-review.googlesource.com/#/q/If27bc4f86851a978239709a6f7ddab8ec94070ca">If27bc</a>, <a href="https://issuetracker.google.com/issues/177457083">b/177457083</a>)</li> <li>AnimationEndReason.Interrupted is removed. CancellationException will be throws if animation is interrupted. (<a href="https://android-review.googlesource.com/#/q/I2cbbc6112cef6e750c10843846ee46cb9d077b03">I2cbbc</a>, <a href="https://issuetracker.google.com/issues/179695417">b/179695417</a>)</li> <li>TargetAnimation API has been removed. (<a href="https://android-review.googlesource.com/#/q/If47d1f88096955c131af20c1660a5c450d5b7ed9">If47d1</a>, <a href="https://issuetracker.google.com/issues/177457083">b/177457083</a>)</li> </ul> <h3 id="1.0.0-alpha12" data-text="Version 1.0.0-alpha12" tabindex="-1">Version 1.0.0-alpha12</h3> <p>February 10, 2021</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.0.0-alpha12</code> and <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.0.0-alpha12</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/6950aab50fe6c9f7e9d97cf865161f2d3999eb9e..9ed3262e0dfca1d352bdbf8f8e10253a61ef6218/compose/animation">Version 1.0.0-alpha12 contains these commits.</a></p> <p><strong>API Changes</strong></p> <ul> <li><code translate="no" dir="ltr">Modifier.pointerInput</code> now requires remember keys to indicate when the pointer input detection coroutine should restart for new dependencies. (<a href="https://android-review.googlesource.com/#/q/I849cd63912b2d4c86ebe0dd24a7d0e2eb7a4e6d1">I849cd</a>)</li> <li>Bounds has been renamed to DpRect (<a href="https://android-review.googlesource.com/#/q/I4b32a75caa8a5e8a1b5a0051f9041855411876e4">I4b32a</a>)</li> <li>Unified the param name for AnimationSpec to animationSpec across the animation system. Also constrain the Enter/ExitTransition to accept FiniteAnimationSpec. (<a href="https://android-review.googlesource.com/#/q/Ie47c54ef91d1a4330e4d6f0f18ec3cde78d903ad">Ie47c5</a>, <a href="https://issuetracker.google.com/issues/177457083">b/177457083</a>)</li> <li>Animatable.snapTo and Animatable.stop are now suspend functions (<a href="https://android-review.googlesource.com/#/q/If42887504caa0a07a0d89477805b68ca51c9b3b4">If4288</a>)</li> <li>Similarly to how we previously removed <code translate="no" dir="ltr">state { 0 }</code> composable and now promote usage like <code translate="no" dir="ltr">remember { mutableStateOf(0) }</code> we are going to remove <code translate="no" dir="ltr">savedInstanceState { 0 }</code> composable. You should use <code translate="no" dir="ltr">rememberSaveable { mutableStateOf(0) }</code> instead and it will save and restore automatically if the type used inside the MutableState can be stored in the Bundle. If previously you were passing a custom saver object now you need to use a new overload of rememberSaveable which has <code translate="no" dir="ltr">stateSaver</code> parameter. The usage will look like this: <code translate="no" dir="ltr">val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }</code> (<a href="https://android-review.googlesource.com/#/q/Ib4c266902d166f119ea1770cccbc78ac25a54ff7">Ib4c26</a>, <a href="https://issuetracker.google.com/issues/177338004">b/177338004</a>)</li> <li>Updated Crossfade's method signature to be more consistent with the rest of the animation system. (<a href="https://android-review.googlesource.com/#/q/Ib05ed5405bd4a781d2d78c84b7c06c0d153e8dc2">Ib05ed</a>, <a href="https://issuetracker.google.com/issues/177457083">b/177457083</a>)</li> <li>rememberSavedInstanceState() was renamed to rememberSaveable() and moved to androidx.compose.runtime.saveable package. (<a href="https://android-review.googlesource.com/#/q/I1366e7fef0a5a56a43d6eeb3770967a9bf683380">I1366e</a>, <a href="https://issuetracker.google.com/issues/177338004">b/177338004</a>)</li> <li>RestorableStateHolder was renamed to SaveableStateHolder and moved to androidx.compose.runtime.saveable package. Inner method RestorableStateProvider was renamed to SaveableStateProvider. Generic type was removed so you can just pass Any as a key. Experimental annotation is not needed anymore. (<a href="https://android-review.googlesource.com/#/q/I0902eb1618d36d08ade37be7b6a9453d85b1af62">I0902e</a>, <a href="https://issuetracker.google.com/issues/174598702">b/174598702</a>)</li> <li>Updated Modifier.animateContentSize API to be consistent with the rest of the animation system. (<a href="https://android-review.googlesource.com/#/q/I0bf752ff98bd11094a834099cbd1b42c600ebcaf">I0bf75</a>, <a href="https://issuetracker.google.com/issues/177457083">b/177457083</a>)</li> <li>AnimatedValue/Float is now deprecated. Please use Animatable instead. (<a href="https://android-review.googlesource.com/#/q/I713457f88b04e50fbc5deb70a5bb7bbcf777e630">I71345</a>, <a href="https://issuetracker.google.com/issues/177457083">b/177457083</a>)</li> <li>tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter and pressIndicaitonGestureFilter have been deprecated. Use Modifier.clickable or Modifier.pointerInput with detectTapGestures function instead. (<a href="https://android-review.googlesource.com/#/q/I6baf95f881b6fa6890ca1d065d49fef3e27bce83">I6baf9</a>, <a href="https://issuetracker.google.com/issues/175294473">b/175294473</a>)</li> <li>Introduced an <code translate="no" dir="ltr">InfiniteAnimationPolicy</code> coroutine context element that will be applied in infinite animations. By default no policy is installed, except when running tests with <code translate="no" dir="ltr">ComposeTestRule</code>. (<a href="https://android-review.googlesource.com/#/q/I50ec421d7db495459a61c9282dbc2bfbc1f1ad02">I50ec4</a>, <a href="https://issuetracker.google.com/issues/151940543">b/151940543</a>)</li> <li>Destructuring and copy() methods have been removed from several classes where they were rarely used. (<a href="https://android-review.googlesource.com/#/q/I267021d3a45314acc9a169f6bbdfbfb4295a448c">I26702</a>, <a href="https://issuetracker.google.com/issues/178659281">b/178659281</a>)</li> <li>Playtime in animation is now unfiied to nanoseconds (<a href="https://android-review.googlesource.com/#/q/If776ab3406909ddf6d841dc2e71fc0889db77047">If776a</a>)</li> <li>The compose:runtime-dispatch artifact is now deprecated. MonotonicFrameClock can now be found in compose:runtime and AndroidUiDispatcher can be found in compose:ui. (<a href="https://android-review.googlesource.com/#/q/Ib5c36a427306eceac4b9b16b52a091e864e5b936">Ib5c36</a>)</li> <li>Added <code translate="no" dir="ltr">Animation.isInfinite</code> and <code translate="no" dir="ltr">VectorizedAnimationSpec.isInfinite</code> that signal if an animation is infinite or not. This can be used in implementations of animations to have special handling of such animations. For example, a special "time remaining" message can be shown, or during tests the animation can be cancelled to prevent waiting for idleness indefinitely. (<a href="https://android-review.googlesource.com/#/q/Iebb05e9d158b4fe81d037ab28e113da4926c50cd">Iebb05</a>, <a href="https://issuetracker.google.com/issues/151940543">b/151940543</a>)</li> <li>Use Long instead of Uptime as animation time type (<a href="https://android-review.googlesource.com/#/q/Ie3aa71cd8bf9ff66e74daa482b6ca5a6af9d15e2">Ie3aa7</a>, <a href="https://issuetracker.google.com/issues/177420019">b/177420019</a>)</li> </ul> <h3 id="1.0.0-alpha11" data-text="Version 1.0.0-alpha11" tabindex="-1">Version 1.0.0-alpha11</h3> <p>January 28, 2021</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.0.0-alpha11</code> and <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.0.0-alpha11</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/6207afb1646d302c5d29c2c67d332b48db87fb27..6950aab50fe6c9f7e9d97cf865161f2d3999eb9e/compose/animation">Version 1.0.0-alpha11 contains these commits.</a></p> <p><strong>API Changes</strong></p> <ul> <li>TransitionDefinition-based Transition has been deprecated (<a href="https://android-review.googlesource.com/#/q/I0ac57acd13386d028dfe0840e8ce509362cf107e">I0ac57</a>)</li> <li>A label field is added for Transition and child animations to be displayed in tools (<a href="https://android-review.googlesource.com/#/q/I619fb982527ac50dc6d0bdac0227b2d830b81397">I619fb</a>)</li> <li>animateAsState is now animateFooAsState, where Foo is the type of the variable being animated. e.g. Float, Dp, Offset, etc (<a href="https://android-review.googlesource.com/#/q/Ie7e25c8978996334b0dcc757b07df1434ff346aa">Ie7e25</a>)</li> <li>New InfiniteTransition that runs any number of child animations. (<a href="https://android-review.googlesource.com/#/q/I1da81724c9f9d1c20f5c24b3170f7c9f899fcb23">I1da81</a>)</li> <li>Changes Material stateful parameter interfaces to have @Composable functions that return <code translate="no" dir="ltr">State<T></code>. Adds Animatable.asState() to make it easier to convert an Animatable to a State. Also changes animateElevation to be a suspend extension on Animatable. (<a href="https://android-review.googlesource.com/#/q/If613cc7c751a11b77a03f8066b233b7e55cb67e0">If613c</a>)</li> </ul> <p><strong>Bug Fixes</strong></p> <ul> <li>onCommit, onDispose, and onActive have been deprecated in favor of SideEffect and DisposableEffect APIs (<a href="https://android-review.googlesource.com/#/q/If760ec2a190c4121a35006695d953010ac22a43a">If760e</a>)</li> <li>Initial State in updateTransition is now supported (<a href="https://android-review.googlesource.com/#/q/Ifd51d5c737b86d52282c18e29b89e75e1c0bea35">Ifd51d</a>)</li> <li>Content description parameter has been added to the Image and Icon. It is used to provide description to the accessibility services (<a href="https://android-review.googlesource.com/#/q/I2ac4c1058ed0bf1e5756cc6cdae546806974409e">I2ac4c</a>)</li> <li>invalidate and compositionReference() are now deprecated in favor of currentRecomposeScope and rememberCompositionReference respectively. (<a href="https://android-review.googlesource.com/#/q/I583a8efa6e3d3bc303792b825b948b3722ada103">I583a8</a>)</li> <li>Duration and Uptime will be replace with Long milliseconds, and this step removes the dependency of pointer input on those classes. (<a href="https://android-review.googlesource.com/#/q/Ia33b2d6835861501019481b388cb2c99441c346c">Ia33b2</a>, <a href="https://issuetracker.google.com/issues/175142755">b/175142755</a>, <a href="https://issuetracker.google.com/issues/177420019">b/177420019</a>)</li> <li>clickable, toggleable and selectable can be created outside of composition now (<a href="https://android-review.googlesource.com/#/q/I0a130bfa57713c96cc8b52c67becd32145526685">I0a130</a>, <a href="https://issuetracker.google.com/issues/172938345">b/172938345</a>, <a href="https://issuetracker.google.com/issues/175294473">b/175294473</a>)</li> <li>Easing has been changed to a functional interface (<a href="https://android-review.googlesource.com/#/q/Ib14e513b2c4b839287535bda19ae93375a4baa73">Ib14e5</a>)</li> <li>New <code translate="no" dir="ltr">items(count: Int)</code> factory method for scope of LazyColumn/LazyRow/LazyVerticalGrid. <code translate="no" dir="ltr">items(items: List)</code> and <code translate="no" dir="ltr">itemsIndexed(items: List)</code> are now extension functions so you have to manually import them when used. New extension overloads for Arrays: items(items: Array) and itemsIndexed(Array) (<a href="https://android-review.googlesource.com/#/q/I803fc5f25fac55855c710ff5064f11525f7b6010">I803fc</a>, <a href="https://issuetracker.google.com/issues/175562574">b/175562574</a>)</li> <li>Leverage TestCoroutineDispatcher in testing (<a href="https://android-review.googlesource.com/#/q/I532b68e37ea6f72964fdcc267e397d285cffd9ad">I532b6</a>)</li> <li>Removed PointerInputData and modified PointerInputChange to give it all of PointerInputData's fields. Made PointerInputEvent and PointerInputEventData internal because they aren't used in any public API. (<a href="https://android-review.googlesource.com/#/q/Ifff970815031482a0ac1d5dab42a6156e10154b1">Ifff97</a>, <a href="https://issuetracker.google.com/issues/175142755">b/175142755</a>)</li> </ul> <h3 id="1.0.0-alpha10" data-text="Version 1.0.0-alpha10" tabindex="-1">Version 1.0.0-alpha10</h3> <p>January 13, 2021</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.0.0-alpha10</code> and <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.0.0-alpha10</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/72f02c12e4709ab41ae0fea9a8a668d5267a1df8..6207afb1646d302c5d29c2c67d332b48db87fb27/compose/animation">Version 1.0.0-alpha10 contains these commits.</a></p> <p><strong>API Changes</strong></p> <ul> <li>Modified Velocity to have component parts and mathematical operations. (<a href="https://android-review.googlesource.com/#/q/Ib0447d694d7c5dc82fcef7448faeb0cdda87fced">Ib0447</a>)</li> <li>Renamed <code translate="no" dir="ltr">@ExperimentalTesting</code> to <code translate="no" dir="ltr">@ExperimentalTestApi</code> to be consistent with similar experimental api annotations (<a href="https://android-review.googlesource.com/#/q/Ia4502a82d5b66328b6e3e3cd322614939816901e">Ia4502</a>, <a href="https://issuetracker.google.com/issues/171464963">b/171464963</a>)</li> <li>Renamed Position to DpOffset and removed getDistance() (<a href="https://android-review.googlesource.com/#/q/Ib2dfde4ceb450e417ff759bdabbc74d2506a44c9">Ib2dfd</a>)</li> <li>Removed Any.identityHashCode() public api (<a href="https://android-review.googlesource.com/#/q/I025d720aec64ebd2182787b9200ca9b3827d5436">I025d7</a>)</li> </ul> <p><strong>Bug Fixes</strong></p> <ul> <li>New coroutine-based API <code translate="no" dir="ltr">Animatable</code> that ensures mutual exclusiveness among its animations. New DecayAnimationSpec to support multi-dimensional decay animation (<a href="https://android-review.googlesource.com/#/q/I820f29e24eaa512515c776db971444290dea97e9">I820f2</a>, <a href="https://issuetracker.google.com/issues/168014930">b/168014930</a>)</li> <li><code translate="no" dir="ltr">animate()</code> is now replaced with <code translate="no" dir="ltr">animateAsState()</code>, which returns a <code translate="no" dir="ltr">State<T></code> instead of <code translate="no" dir="ltr">T</code>. This allows better performance, as the invalidation scope can be narrowed down to where the State value is read. (<a href="https://android-review.googlesource.com/#/q/Ib179e3f5f4bf3b72f7445fc22e73c46af7cf74de">Ib179e</a>)</li> </ul> <h3 id="1.0.0-alpha09" data-text="Version 1.0.0-alpha09" tabindex="-1">Version 1.0.0-alpha09</h3> <p>December 16, 2020</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.0.0-alpha09</code> and <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.0.0-alpha09</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/10b5e9fd366c1c413d5576aed50a305d300938e1..72f02c12e4709ab41ae0fea9a8a668d5267a1df8/compose/animation">Version 1.0.0-alpha09 contains these commits.</a></p> <p><strong>API Changes</strong></p> <ul> <li>Moved Dp.VectorConverter, Position.VectorConverter, etc to animation-core, and deprecated the old VectorConveters (<a href="https://android-review.googlesource.com/#/q/If0c4bbdec55ec9d6436d74156db6f993904aae47">If0c4b</a>)</li> <li>Introduced a whole new set of Transition APIs with improved ease of use, and support for dynamically added animations, and dynamically calculated animation targets. This APIs are marked experimental for easy differentiation from the TransitionDefinition-based API. (<a href="https://android-review.googlesource.com/#/q/Ia7fe35961a5c50972f149562bb66c4b87b9302ac">Ia7fe3</a>)</li> </ul> <p><strong>Bug Fixes</strong></p> <ul> <li>Lambdas in offset modifiers now return IntOffset rather than Float. (<a href="https://android-review.googlesource.com/#/q/Ic9ee5c05df4c89993ee19f19ddd327a986f21bc1">Ic9ee5</a>, <a href="https://issuetracker.google.com/issues/174137212">b/174137212</a>, <a href="https://issuetracker.google.com/issues/174146755">b/174146755</a>)</li> <li>Deprecate LazyColumnFor, LazyRowFor, LazyColumnForIndexed and LazyRowForIndexed. Use LazyColumn and LazyRow instead (<a href="https://android-review.googlesource.com/#/q/I5b48c8a3b1fef2f603ab69ded1d19709aa9f87fb">I5b48c</a>)</li> <li>For suspending pointer input APIs, renamed HandlePointerInputScope to AwaitPointerEventScope and handlePointerInput() to awaitPointerEventScope(). (<a href="https://android-review.googlesource.com/#/q/Idf0a1b94f065e72b65361cdf616122ed7939c3e7">Idf0a1</a>, <a href="https://issuetracker.google.com/issues/175142755">b/175142755</a>)</li> <li>New infiniteRepeatable function for creating an InfiniteRepeatableSpec (<a href="https://android-review.googlesource.com/#/q/I668e501c0c9061aa94b258ec9646617e0f77faf1">I668e5</a>)</li> <li>Removed ExperimentalPointerInput annotation (<a href="https://android-review.googlesource.com/#/q/Ia7a2473869400fc92ce70c802f42df9af7129386">Ia7a24</a>)</li> </ul> <h3 id="1.0.0-alpha08" data-text="Version 1.0.0-alpha08" tabindex="-1">Version 1.0.0-alpha08</h3> <p>December 2, 2020</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.0.0-alpha08</code> and <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.0.0-alpha08</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/358bdaf3c3c4a917883408e9f747da521fdf9e65..10b5e9fd366c1c413d5576aed50a305d300938e1/compose/animation">Version 1.0.0-alpha08 contains these commits.</a></p> <aside class="note"><strong>Note:</strong><span> This release is only compatible with Kotlin <code translate="no" dir="ltr">1.4.20</code>, so you will need to update your Kotlin version.</span></aside> <p><strong>API Changes</strong></p> <ul> <li>Added lint check for composable lambda parameter naming and position, to check for consistency with Compose guidelines. Also migrated some APIs using <code translate="no" dir="ltr">children</code> as the name for their trailing lambda to <code translate="no" dir="ltr">content</code>, according to the lint check and guidance. (<a href="https://android-review.googlesource.com/#/q/Iec48e38a2896785b521814d95c9fb624d2807315">Iec48e</a>)</li> <li>Previously Deprecated APIs were removed: <ul> <li><code translate="no" dir="ltr">Modifier.onPositioned</code> was removed, use <code translate="no" dir="ltr">Modifier.onGloballyPositioned</code>.</li> <li><code translate="no" dir="ltr">Modifier.onDraw</code> was removed, use <code translate="no" dir="ltr">Modifier.onDrawBehind</code>.</li> <li><code translate="no" dir="ltr">Modifier.plus</code> was removed, use <code translate="no" dir="ltr">Modifier.then</code>.</li> <li><code translate="no" dir="ltr">Color.Unset</code> was removed, use <code translate="no" dir="ltr">Color.Unspecified</code>.</li> <li><code translate="no" dir="ltr">PxBounds</code> class was removed, use <code translate="no" dir="ltr">Rect</code> instead.</li> <li>(<a href="https://android-review.googlesource.com/#/q/Ie9d0239f96922f1db769c38f6f970532a8f54ff3">Ie9d02</a>, <a href="https://issuetracker.google.com/issues/172562222">b/172562222</a>)</li> </ul></li> <li>Temporarily added option to let the TestAnimationClock be driven by the MonotonicFrameClock (<a href="https://android-review.googlesource.com/#/q/I1403ba3d82adc530d885192aa696c4363456a4c1">I1403b</a>, <a href="https://issuetracker.google.com/issues/173402197">b/173402197</a>)</li> </ul> <p><strong>Bug Fixes</strong></p> <ul> <li>Renamed Modifier.drawLayer to Modifier.graphicsLayer Also updated related classes to GraphicsLayer as per API council feedback. (<a href="https://android-review.googlesource.com/#/q/I0bd297065427d19715e4e33480f7be87e51ff48a">I0bd29</a>, <a href="https://issuetracker.google.com/issues/173834241">b/173834241</a>)</li> <li>Added Modifier.scale/rotate APIs as conveniences for drawLayer. <ul> <li>Renamed Modifier.drawOpacity to Modifier.alpha</li> <li>Renamed Modifier.drawShadow to Modifier.shadow (<a href="https://android-review.googlesource.com/#/q/I264ca72b36ea62fd615436849203895ed742fa1e">I264ca</a>, <a href="https://issuetracker.google.com/issues/173208140">b/173208140</a>)</li> </ul></li> <li>Made PointerInputData's uptime and position fields non-nullable. (<a href="https://android-review.googlesource.com/#/q/Id468a0ef7c00c30a89114ea8dc95fa019961e189">Id468a</a>)</li> <li>offsetPx modifiers were renamed to offset. They are now taking lambda parameters instead of State. (<a href="https://android-review.googlesource.com/#/q/Ic302174ef9cffa7ef806d1668f81cb89159363f2">Ic3021</a>, <a href="https://issuetracker.google.com/issues/173594846">b/173594846</a>)</li> <li>New APIs for running animations in coroutines (<a href="https://android-review.googlesource.com/#/q/Ied662fbc4c4c373fba7877c1421ee76c49fd69b1">Ied662</a>)</li> <li>Deprecated Ambients named with <code translate="no" dir="ltr">Ambient</code> as their suffix, and replaced them with new properties prefixed with Ambient, following other Ambients and Compose API guidelines. (<a href="https://android-review.googlesource.com/#/q/I334403cc490ea913b8980d29e2cbe08e98ad7945">I33440</a>)</li> <li>Time control in tests (TestAnimationClock and its usages) is now experimental (<a href="https://android-review.googlesource.com/#/q/I6ef86c5f530422c7c751bdb086a691cbc2e837f3">I6ef86</a>, <a href="https://issuetracker.google.com/issues/171378521">b/171378521</a>)</li> <li>Remove old ui-test module and its stubs (<a href="https://android-review.googlesource.com/#/q/I3a7cbbe376d0542955983fb09afd2dc37be7647e">I3a7cb</a>)</li> <li><code translate="no" dir="ltr">RestorableStateHolder.withRestorableState</code> function was renamed to <code translate="no" dir="ltr">RestorableStateProvider</code> (<a href="https://android-review.googlesource.com/#/q/I66640dac2f299f5d85d270f2aa1c5d6fc8ab7128">I66640</a>)</li> <li>The Alignment interface was updated and made functional. (<a href="https://android-review.googlesource.com/#/q/I46a0791e261b6f305804797cdda7fdd2ef405305">I46a07</a>, <a href="https://issuetracker.google.com/issues/172311734">b/172311734</a>)</li> </ul> <h3 id="1.0.0-alpha07" data-text="Version 1.0.0-alpha07" tabindex="-1">Version 1.0.0-alpha07</h3> <p>November 11, 2020</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.0.0-alpha07</code> and <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.0.0-alpha07</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/234e23e470a5e7f81291f6acd12d538146dc010b..358bdaf3c3c4a917883408e9f747da521fdf9e65/compose/animation">Version 1.0.0-alpha07 contains these commits.</a></p> <p><strong>Bug Fixes</strong></p> <ul> <li>The foundation AmbientTextStyle, ProvideTextStyle, and AmbientContentColor have been deprecated. Instead use the new versions available in the Material library. For non-Material applications, you should instead create your own design system specific theming ambients that can be consumed in your own components. (<a href="https://android-review.googlesource.com/#/q/I74accf7166eaca28e9e2d14402ed08d80f8625ab">I74acc</a>, <a href="https://issuetracker.google.com/issues/172067770">b/172067770</a>)</li> <li>foundation.Text has been deprecated and replaced with material.Text. For a basic, unopinionated text API that does not consume values from a theme, see androidx.compose.foundation.BasicText. (<a href="https://android-review.googlesource.com/#/q/If64cbdd89497f171edfd1b4de907123f73279e8d">If64cb</a>)</li> <li>MeasureResult was moved out of MeasureScope. (<a href="https://android-review.googlesource.com/#/q/Ibf96ddadae8115015066dcda2026a57b87c2ead6">Ibf96d</a>, <a href="https://issuetracker.google.com/issues/171184002">b/171184002</a>)</li> <li>Several layout related symbols were moved from androidx.compose.ui to androidx.compose.layout.ui. (<a href="https://android-review.googlesource.com/#/q/I0fa982d87929e5ca9e3a32762fe9cf1fa8b8cfef">I0fa98</a>, <a href="https://issuetracker.google.com/issues/170475424">b/170475424</a>)</li> </ul> <h3 id="1.0.0-alpha06" data-text="Version 1.0.0-alpha06" tabindex="-1">Version 1.0.0-alpha06</h3> <p>October 28, 2020</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.0.0-alpha06</code> and <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.0.0-alpha06</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/dd84d35abd1bc13fe53a4632d4b3889f6062ac81..234e23e470a5e7f81291f6acd12d538146dc010b/compose/animation">Version 1.0.0-alpha06 contains these commits.</a></p> <p><strong>API Changes</strong></p> <ul> <li>Enable transitions in ComposeTestRule; remove option to enable the blinking cursor from ComposeTestRule. (<a href="https://android-review.googlesource.com/#/q/If0de36db743b7f57b161b0fe6324565750436866">If0de3</a>)</li> </ul> <h3 id="1.0.0-alpha05" data-text="Version 1.0.0-alpha05" tabindex="-1">Version 1.0.0-alpha05</h3> <p>October 14, 2020</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.0.0-alpha05</code> and <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.0.0-alpha05</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/64c532a70705a33e1e12d83a42fe6aeaca6823f9..dd84d35abd1bc13fe53a4632d4b3889f6062ac81/compose/animation">Version 1.0.0-alpha05 contains these commits.</a></p> <p><strong>API Changes</strong></p> <ul> <li>New Animation interface and subclasses: These classes store the start and end conditions for animations, and therefore allow value and velocity to be queried via only playtime (<a href="https://android-review.googlesource.com/#/q/Ie95bdaad0a1cf18dc18548fd511ef6f31faa1e59">Ie95bd</a>, <a href="https://issuetracker.google.com/issues/163329867">b/163329867</a>)</li> </ul> <p><strong>Bug Fixes</strong></p> <ul> <li>OnPositionedModifier is renamed to OnGloballyPositionedModifier and onPositioned() is renamed to onGloballyPositioned(). (<a href="https://android-review.googlesource.com/#/q/I587e8b151079d9d9506d86caa4283b7108958de4">I587e8</a>, <a href="https://issuetracker.google.com/issues/169083903">b/169083903</a>)</li> <li><p>Deprecates contentColor() and currentTextStyle() APIs, and replaces them with AmbientContentColor and AmbientTextStyle ambients respectively. You can access the current value by using <code translate="no" dir="ltr">.current</code> on the ambient property, as with any other ambient. This was change was made for consistency and to avoid having multiple ways to accomplish the same thing. Additionally renames some ambient properties to better describe their purpose as follows:</p> <ul> <li>ContentColorAmbient -> AmbientContentColor</li> <li>TextStyleAmbient -> AmbientTextStyle</li> <li>IndicationAmbient -> AmbientIndication</li> <li>EmphasisAmbient -> AmbientEmphasisLevels</li> <li>RippleThemeAmbient -> AmbientRippleTheme (<a href="https://android-review.googlesource.com/#/q/I37b6dccb9751f2a9eb550f42da32bf4b1bff4296">I37b6d</a>)</li> </ul></li> </ul> <h3 id="1.0.0-alpha04" data-text="Version 1.0.0-alpha04" tabindex="-1">Version 1.0.0-alpha04</h3> <p>October 1, 2020</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.0.0-alpha04</code> and <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.0.0-alpha04</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/18a5639262f8504db530176550e338a5d0e2e044..f5a2c7477391539d8bc9f65a8f0db1e8a7bf2cf5/compose/animation">Version 1.0.0-alpha04 contains these commits.</a></p> <aside class="note"><strong>Note:</strong><span> Compose Version 1.0.0-alpha04 is only compatible with Android Studio 4.2 Canary 13 and later.</span></aside> <p><strong>API Changes</strong></p> <ul> <li>Annotated rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled and textInputServiceFactory with @VisibleForTesting, make them internal API and hide their kdoc (<a href="https://android-review.googlesource.com/#/q/I554ebefac18b216d51e387e5fd1c3a735fde9500">I554eb</a>, <a href="https://issuetracker.google.com/issues/168308412">b/168308412</a>)</li> </ul> <p><strong>Bug Fixes</strong></p> <ul> <li>Updated many Graphics APIs <ul> <li>Updated scale and rotation transformation APIs to consume a single Offset parameter to represent the pivot coordinate instead of separate float parameters for the x/y coordinates in DrawScope and DrawTransform</li> <li>Removed Rect.expandToInclude and Rect.join methods</li> <li>Updated Radius documentation to say oval in addition to elliptical</li> <li>Added documentation to indicate the public constructor for the inline Radius class is not to be called directly but instead Radius objects should be instantiated through their function constructors</li> <li>Removed RoundRect APIs to query topRight, bottomRight, bottomCenter, etc.</li> <li>Deprecated Rect.shift in favor of Rect.translate</li> <li>Removed RoundRect.grow and Rect.shrink APIs</li> <li>Renamed RoundRect.outerRect to Rect.boundingRect</li> <li>Removed RoundRect.middleRect/tallMiddleRect/wideMiddleRect and Rect.isStadium methods</li> <li>Renamed RoundRect.longestSide to RoundRect.maxDimension</li> <li>Renamed RoundRect.shortestSide to RoundRect.minDimension</li> <li>Changed RoundRect.center to be a property instead of a function</li> <li>Updated RoundRect constructor to consume Radius properties instead of individual parameters for x/y radius values</li> <li>Removed Size APIs that assumed it was a Rectangle with origin at 0,0</li> <li>Added a destructing API to Radius</li> <li>Migrated various RoundRect extension functions to be properties instead</li> <li>(<a href="https://android-review.googlesource.com/#/q/I8f5c738d1629b2cabd1b6e9fc8e8241dd06cfe2c">I8f5c7</a>, <a href="https://issuetracker.google.com/issues/168762961">b/168762961</a>)</li> </ul></li> <li>foundation.Box was deprecated. Please use foundation.layout.Box instead. (<a href="https://android-review.googlesource.com/#/q/Ie59501cfd404c6bce53afee2d14dd95f1520d02c">Ie5950</a>, <a href="https://issuetracker.google.com/issues/167680279">b/167680279</a>)</li> <li>Stack was renamed to Box. The previously existing Box will be deprecated in favor of the new Box in compose.foundation.layout. The behavior of the new Box is to stack children one on top of another when it has multiple children - this is different from the previous Box, which was behaving similar to a Column. (<a href="https://android-review.googlesource.com/#/q/I94893bca003d7826c6a5b3c05ac3878d2f6bf953">I94893</a>, <a href="https://issuetracker.google.com/issues/167680279">b/167680279</a>)</li> <li>Box decoration parameters have been deprecated. If you want to have decorations/padding on your box, use Modifiers instead (Modifier.background, Modifier.border, Modifier.padding) (<a href="https://android-review.googlesource.com/#/q/Ibae92e99d0dd8984e666ece6cd6ec6f26f6ef672">Ibae92</a>, <a href="https://issuetracker.google.com/issues/167680279">b/167680279</a>)</li> <li>We prevented static imports of contents of layout scopes (e.g. alignWithSiblings in RowScope). The explicit scope alternative should be used instead: <code translate="no" dir="ltr">with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }</code>. (<a href="https://android-review.googlesource.com/#/q/I216be6984d82e0a41432ac5b89f7d6240eef1b9d">I216be</a>, <a href="https://issuetracker.google.com/issues/166760797">b/166760797</a>)</li> </ul> <h3 id="1.0.0-alpha03" data-text="Version 1.0.0-alpha03" tabindex="-1">Version 1.0.0-alpha03</h3> <p>September 16, 2020</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.0.0-alpha03</code> and <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.0.0-alpha03</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/31022a2dda22705843be1199c786552a6f9f875d..18a5639262f8504db530176550e338a5d0e2e044/compose/animation">Version 1.0.0-alpha03 contains these commits.</a></p> <p><strong>Bug Fixes</strong></p> <ul> <li>Usages of gravity were consistently renamed to align or alignment in layout APIs. (<a href="https://android-review.googlesource.com/#/q/I2421a4d640a7086079739cd0e569aef70bb48577">I2421a</a>, <a href="https://issuetracker.google.com/issues/164077038">b/164077038</a>)</li> </ul> <h3 id="1.0.0-alpha02" data-text="Version 1.0.0-alpha02" tabindex="-1">Version 1.0.0-alpha02</h3> <p>September 2, 2020</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.0.0-alpha02</code> and <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.0.0-alpha02</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/96eb302ee1740ba656c90c9fb27df3723a1a89c1..31022a2dda22705843be1199c786552a6f9f875d/compose/animation">Version 1.0.0-alpha02 contains these commits.</a></p> <p><strong>API Changes</strong></p> <ul> <li><p>Added <code translate="no" dir="ltr">ManualFrameClock.hasAwaiters</code> to see if anything is awaiting a frame from that clock; <code translate="no" dir="ltr">runWithManualClock</code> as a replacement for <code translate="no" dir="ltr">runBlocking</code> when running tests that need a ManualFrameClock; <code translate="no" dir="ltr">TestUiDispatcher.Main</code> that gives easy access to the main UI dispatcher in your tests.</p> <p>For example:</p> <div></div><devsite-code><pre class="devsite-click-to-copy" translate="no" dir="ltr" is-upgraded syntax="Kotlin"><code translate="no" dir="ltr"><span class="devsite-syntax-nd">@Test</span> <span class="devsite-syntax-kd">fun</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-nf">myTest</span><span class="devsite-syntax-p">()</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-o">=</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">runWithManualClock</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-p">{</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">clock</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-o">-</span>> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-c1">// set some compose content</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">withContext</span><span class="devsite-syntax-p">(</span><span class="devsite-syntax-n">TestUiDispatcher</span><span class="devsite-syntax-p">.</span><span class="devsite-syntax-na">Main</span><span class="devsite-syntax-p">)</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-p">{</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">clock</span><span class="devsite-syntax-p">.</span><span class="devsite-syntax-na">advanceClock</span><span class="devsite-syntax-p">(</span><span class="devsite-syntax-m">1000L</span><span class="devsite-syntax-p">)</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-p">}</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-k">if</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-p">(</span><span class="devsite-syntax-n">clock</span><span class="devsite-syntax-p">.</span><span class="devsite-syntax-na">hasAwaiters</span><span class="devsite-syntax-p">)</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-p">{</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">println</span><span class="devsite-syntax-p">(</span><span class="devsite-syntax-s">"The clock has awaiters"</span><span class="devsite-syntax-p">)</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-p">}</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-k">else</span><span class="devsite-syntax-w"> </span><span class="devsite-syntax-p">{</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-n">println</span><span class="devsite-syntax-p">(</span><span class="devsite-syntax-s">"The clock has no more awaiters"</span><span class="devsite-syntax-p">)</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-p">}</span> <span class="devsite-syntax-p">}</span> </code></pre></devsite-code> <p>(<a href="https://android-review.googlesource.com/#/q/I0a85b019ae5f40f52f2c6b78c08958eb7b8e7485">I0a85b</a>, <a href="https://issuetracker.google.com/issues/161247083">b/161247083</a>)</p></li> </ul> <p><strong>Bug Fixes</strong></p> <ul> <li><p>onPreCommit is deprecated; onCommit now has onPreCommit's behavior.</p> <p>onCommit and onActive now run in the same choreographer frame that the composition changes committed in rather than at the beginning of the next choreographer frame. (<a href="https://android-review.googlesource.com/#/q/I70403eea442a7a003f08e7b1d19e44e0134ea077">I70403</a>)</p></li> </ul> <h3 id="1.0.0-alpha01" data-text="Version 1.0.0-alpha01" tabindex="-1">Version 1.0.0-alpha01</h3> <p>August 26, 2020</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:1.0.0-alpha01</code> and <code translate="no" dir="ltr">androidx.compose.animation:animation-core:1.0.0-alpha01</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/96eb302ee1740ba656c90c9fb27df3723a1a89c1..c93ac38a59f31e5db0eab67687532a4ba61913d5/ui">Version 1.0.0-alpha01 contains these commits.</a></p> <h2 id="version_010-dev_2" data-text="Version 0.1.0-dev" tabindex="-1">Version 0.1.0-dev</h2> <h3 id="0.1.0-dev17" data-text="Version 0.1.0-dev17" tabindex="-1">Version 0.1.0-dev17</h3> <p>August 19, 2020</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:0.1.0-dev17</code> and <code translate="no" dir="ltr">androidx.compose.animation:animation-core:0.1.0-dev17</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/316f882e649c600372170f013a18515f590f490d..96eb302ee1740ba656c90c9fb27df3723a1a89c1/ui">Version 0.1.0-dev17 contains these commits.</a></p> <p><strong>New Features</strong></p> <p><strong>API Changes</strong></p> <ul> <li>Offset has become an inline class (<a href="https://android-review.googlesource.com/#/q/Iaec70bb466cae8964f03e7484c1e86857c924f82">Iaec70</a>)</li> <li>IntOffset is now an inline class (<a href="https://android-review.googlesource.com/#/q/Iac0bf89bb95642bf3a77073aead2cbce4c0e2e37">Iac0bf</a>)</li> <li>IntSize is now an inline class (<a href="https://android-review.googlesource.com/#/q/I2bf426245b41f4189dead45114e3791bbceb9d13">I2bf42</a>)</li> <li><p>AnimatedVisibilty composable animates the appearance and disappearance of the child content.</p> <p>EnterTransition and ExitTransition are introduced to work with AnimatedVisibilty composable to provide 3 different typs of appearance and disappearance animation: fade, slide, and expand/shrink the content. The different types of animations can be combined to achieve more bespoke look and feel. (<a href="https://android-review.googlesource.com/#/q/Idda1162e0d7f777f64dfd91b3192c2548d1c2c29">Idda11</a>)</p></li> <li><p>Deprecated PxBounds in favor of Rect. Updated all usages of PxBounds with rect and added proper deprecate/replace with annotations to assist with the migration. (<a href="https://android-review.googlesource.com/#/q/I370384202fff3e5b147d42086f4350ab7fa830de">I37038</a>, <a href="https://issuetracker.google.com/issues/162627058">b/162627058</a>)</p></li> </ul> <p><strong>Bug Fixes</strong></p> <ul> <li><code translate="no" dir="ltr">PlacementScope.placeAbsolute()</code> was renamed to <code translate="no" dir="ltr">PlacementScope.place()</code>, and the previous <code translate="no" dir="ltr">PlacementScope.place()</code> was renamed to <code translate="no" dir="ltr">PlacementScope.placeRelative()</code>. As a result, the <code translate="no" dir="ltr">PlacementScope.place()</code> method will not automatically mirror the position in right-to-left contexts anymore. If this is desired, use <code translate="no" dir="ltr">PlacementScope.placeRelative()</code> instead. (<a href="https://android-review.googlesource.com/#/q/I873ac827e6c4d4bf6c85a80b7128174c61602945">I873ac</a>, <a href="https://issuetracker.google.com/issues/162916675">b/162916675</a>)</li> <li>The <code translate="no" dir="ltr">state { ... }</code> composable is now deprecated in favor of explicit calls to <code translate="no" dir="ltr">remember { mutableStateOf(...) }</code> for clarity. This reduces the overall API surface and number of concepts for state management, and matches the <code translate="no" dir="ltr">by mutableStateOf()</code> pattern for class property delegation. (<a href="https://android-review.googlesource.com/#/q/Ia57278556d4f35ecf2cf5e6e30888b0d1f1f8012">Ia5727</a>)</li> </ul> <h3 id="0.1.0-dev16" data-text="Version 0.1.0-dev16" tabindex="-1">Version 0.1.0-dev16</h3> <p>August 5, 2020</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:0.1.0-dev16</code> and <code translate="no" dir="ltr">androidx.compose.animation:animation-core:0.1.0-dev16</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/9c74ed7b07d1c18da576f179d55e568ca12973df..316f882e649c600372170f013a18515f590f490d/ui">Version 0.1.0-dev16 contains these commits.</a></p> <p><strong>API Changes</strong></p> <ul> <li>Built-in vector converters to convert built-in units are now accessible via <code translate="no" dir="ltr">Foo.VectorConverter</code>. e.g. <code translate="no" dir="ltr">Dp.VectorConverter</code>, <code translate="no" dir="ltr">Color.VectorConverter</code>, <code translate="no" dir="ltr">Float.VectorConverter</code>, etc (<a href="https://android-review.googlesource.com/#/q/I3e2734f9712d94cc664184d35d495edab50bda53">I3e273</a>)</li> <li>Support end listener in <code translate="no" dir="ltr">Modifier.animateContentSize()</code> such that when size change animation finishes, the listener will be notified, along with start/end size of the animation. (<a href="https://android-review.googlesource.com/#/q/I277b2b90f1ab5c6473cfb1e2de56e0ae7e67245d">I277b2</a>)</li> <li>New animateContentSize modifier that animates the layout size change of its child modifier (<a href="https://android-review.googlesource.com/#/q/Ieffdccd0fd0545ed139ecc20ef7baaebcda6d9d2">Ieffdc</a>)</li> <li><p>Added <code translate="no" dir="ltr">MonotonicFrameAnimationClock</code> that enables you to use a MonotonicFrameClock as an <code translate="no" dir="ltr">AnimationClockObservable</code> to bridge the gap between the new coroutines based clocks and APIs that still use the old callback based clocks.</p> <p>The <code translate="no" dir="ltr">MonotonicFrameClock</code>equivalent of <code translate="no" dir="ltr">ManualAnimationClock</code> is now <code translate="no" dir="ltr">ManualFrameClock</code>. (<a href="https://android-review.googlesource.com/#/q/I111c7b7182a1495f95eab1bb808d3acd6af82447">I111c7</a>, <a href="https://issuetracker.google.com/issues/161247083">b/161247083</a>)</p></li> </ul> <p><strong>Bug Fixes</strong></p> <ul> <li>The APIs for right-to-left support has been updated. LayoutDirectionAmbient has been added, which can be used to read and change the layout direction. Modifier.rtl and Modifier.ltr have been removed. (<a href="https://android-review.googlesource.com/#/q/I080b3cb674dc32af5fbe7e696228ac21f0720d72">I080b3</a>)</li> <li>Require type T to be explicitly specified for transitionDefinition. (<a href="https://android-review.googlesource.com/#/q/I1adedb34525ebb8c079a77a9af2636f1cb8339f7">I1aded</a>)</li> <li>foundation.shape.corner package were flatten to foundation.share (<a href="https://android-review.googlesource.com/#/q/I464919cb74f8941c2a02f14dea0aa417febf3691">I46491</a>, <a href="https://issuetracker.google.com/issues/161887429">b/161887429</a>)</li> <li>Modifier.plus has been deprecated, use Modifier.then instead. 'Then' has a stronger signal of ordering, while also prohibits to type <code translate="no" dir="ltr">Modifier.padding().background() + anotherModifier</code>, which breaks the chain and harder to read (<a href="https://android-review.googlesource.com/#/q/Iedd587edbed0ba964ef203a66b98be7297147bd7">Iedd58</a>, <a href="https://issuetracker.google.com/issues/161529964">b/161529964</a>)</li> <li>Modifier.drawBackground has been renamed to Modifier.background (<a href="https://android-review.googlesource.com/#/q/I1367723fce0e07418ed4ab391fe20c69aa092f53">I13677</a>)</li> </ul> <h3 id="0.1.0-dev15" data-text="Version 0.1.0-dev15" tabindex="-1">Version 0.1.0-dev15</h3> <p>July 22, 2020</p> <p><code translate="no" dir="ltr">androidx.compose.animation:animation:0.1.0-dev15</code> and <code translate="no" dir="ltr">androidx.compose.animation:animation-core:0.1.0-dev15</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/9f60cc700129e30cee9df020005c317fb39d32ec/ui">Version 0.1.0-dev15 contains these commits.</a></p> <h4 id="dependencies_update_2" data-text="Dependencies Update" tabindex="-1">Dependencies Update</h4> <ul> <li>To use the <code translate="no" dir="ltr">0.1.0-dev15</code> version of Compose, you will need to update your dependencies according to the new code snippets shown above in <a href="#declaring_dependencies">Declaring dependencies</a>.</li> </ul> <p><strong>API Changes</strong></p> <ul> <li>Transition API has been changed to return a TransitionState instead of passing the TransitionState to children. This makes the API more consistent with animate() APIs. (<a href="https://android-review.googlesource.com/#/q/I24e38fea3bf299e47d87dc5d2b42991e03d6786c">I24e38</a>)</li> <li>Modifier parameter added for Crossfade (<a href="https://android-review.googlesource.com/#/q/I87cfe587dd58ee662d8e589274978aef44bbdf99">I87cfe</a>, <a href="https://issuetracker.google.com/issues/159706180">b/159706180</a>)</li> <li>Use AnimationSpec instead of AnimationBuilder in the top level APIs to clarify the concept of static animation specification <ul> <li>Improve the transition DSL by removing the lambda requirement for creating AnimationSpecs such as tween, spring. They instead take constructor params directly.</li> <li>Improve the overall ease of use of AnimationSpec opening up constructors instead of relying on builders</li> <li>Change the duration and delay for KeyFrames and Tween to Int. This eliminates unnecessary type casts and method overloading (for supporting both Long and Int). (<a href="https://android-review.googlesource.com/#/q/Ica0b4cb42996d3d30f9b6dacdbe149c75af77341">Ica0b4</a>)</li> </ul></li> <li>Replaced usage of IntPx with Int. Replaced IntPxPosition with IntOffset. Replaced IntPxSize with IntSize. (<a href="https://android-review.googlesource.com/#/q/Ib7b44d92ce3aff86c606753f0ac5c3122b71041d">Ib7b44</a>)</li> <li>In order to consolidate the number of classes used to represent sizing information, standardize on usage of the Size class instead of PxSize. This provides the benefits of an inline class to leverage a long to pack 2 float values to represent width and height represented as floats. (<a href="https://android-review.googlesource.com/#/q/Ic019171b52d2f24d262d9c47ac964728cdc1ee8b">Ic0191</a>)</li> <li>In order to consolidate the number of classes used to represent positioning information, standardize on usage of the Offset class instead of PxPosition. This provides the benefits of an inline class to leverage a long to pack 2 float values to represent x and y offsets represented as floats. (<a href="https://android-review.googlesource.com/#/q/I3ad983207bc37af20afac03e2cd09b4240777687">I3ad98</a>)</li> <li>Replaced usage of Px class in various compose classes as part of the large refactoring effort to only rely on Dp and primitive types for pixel parameters (<a href="https://android-review.googlesource.com/#/q/I086f4744d1eb51f0f31356e36991c2a8d4433059">I086f4</a>)</li> <li>Added animate() support for Dp, Px, Size, Position, Bounds, PxPosition, PxSize, PxBounds, IntPx, IntPxSize, IntPxPosition, IntPxBounds, and AnimationVector (<a href="https://android-review.googlesource.com/#/q/Ib75184a2dc31986f8eb3698a428cbd8483104f61">Ib7518</a>)</li> <li>Crossfade now accepts optional AnimationBuilder param to allow configuring the animation (<a href="https://android-review.googlesource.com/#/q/I6d6e03ec54221b740d7c88bdb8a8c93a662280a4">I6d6e0</a>)</li> <li>Replaced all nullable Color uses in API with non-nullable and use Color.Unset instead of null (<a href="https://android-review.googlesource.com/#/q/Iabaa7c6334857833cdb0d5958f062e2e576bd240">Iabaa7</a>)</li> <li>Removed ValueHolder class. Restructured AnimatedValue, AnimatedFloat classes to make the animation value field abstract so that subclasses can watch the value update. <ul> <li>Added model classes for AnimatedValue, AnimatedFloat, etc.</li> <li>Added a new set of light-weight @Composable API for animating between values. (<a href="https://android-review.googlesource.com/#/q/I79530e117cfa893a52542f85a55528eaa0f11b93">I79530</a>)</li> </ul></li> <li>Breaking changes to the ambients API. See log and <code translate="no" dir="ltr">Ambient<T></code> documentation for details (<a href="https://android-review.googlesource.com/#/q/I4c7eea45f2b7bf41f8a8ba75fd667c06010469a9">I4c7ee</a>, <a href="https://issuetracker.google.com/issues/143769776">b/143769776</a>)</li> <li>New repeat mode: Reverse. This mode reverses the previous iteration as the animation repeats in RepeatableSpec or VectorizedRepeatableSpec. (<a href="https://android-review.googlesource.com/#/q/Ibe0f50b12223911f87f4541c683f55bc25ad0a3f">Ibe0f5</a>)</li> <li>API additions to ManualAnimationClock: <code translate="no" dir="ltr">hasObservers: Boolean</code> and constructor parameter <code translate="no" dir="ltr">dispatchOnSubscribe: Boolean</code> (<a href="https://android-review.googlesource.com/#/q/Iaa1346a80d6c0ff3b3a4a1ff01cccadbca3407bc">Iaa134</a>)</li> <li>Added APIs for getting min/max bounds in AnimatedFloat (<a href="https://android-review.googlesource.com/#/q/Icd9ccde2e7d163b28d3a7a7d9193bcb4a0c05f9e">Icd9cc</a>)</li> </ul> <p><strong>Bug Fixes</strong></p> <ul> <li><code translate="no" dir="ltr">runOnIdleCompose</code> renamed to <code translate="no" dir="ltr">runOnIdle</code> (<a href="https://android-review.googlesource.com/#/q/I836071f1c3c63d21417a531f336f8a93ca13f9ed">I83607</a>)</li> <li>Several testing APIs were renamed to be more intuitive. All findXYZ APIs were renamed to onNodeXYZ. All doXYZ APIs were renamed to performXYZ. (<a href="https://android-review.googlesource.com/#/q/I7f164b42b04196f023c4a2153d66825487998de4">I7f164</a>)</li> <li>Introduced low level stateless animation APIs. These APIs (<a href="https://android-review.googlesource.com/#/q/I63bf7d28d5ac5e5ca2caaa427ee7643828c848a5">I63bf7</a>)</li> <li>The Recompose composable is no longer a useful abstraction. Most recomposition should happen as a result of MutableState assignments. For anything beyond that, it is recommended that you use the <code translate="no" dir="ltr">invalidate</code> function to trigger a recomposition of the current scope. (<a href="https://android-review.googlesource.com/#/q/Ifc9926013c51c1db1e27e702a707bc1050f82fa6">Ifc992</a>)</li> <li>Replaced usage of Px class in various compose classes as part of the large refactoring effort to only rely on Dp and primitive types for pixel parameters. Deleted Px class in its entirety (<a href="https://android-review.googlesource.com/#/q/I3ff339371abd6fb622172d060a70d12dda4822e0">I3ff33</a>)</li> <li>Replaced usage of Px class in various compose classes as part of the large refactoring effort to only rely on Dp and primitive types for pixel parameters (<a href="https://android-review.googlesource.com/#/q/Id343458210b56a9a4cdae4ef3d0f97ea79004942">Id3434</a>)</li> <li>Crossfade can now work with null as initial value (<a href="https://android-review.googlesource.com/#/q/Iad6a45933469434110ffdf5a55dd2e8eda37035a">Iad6a4</a>, <a href="https://issuetracker.google.com/issues/155947711">b/155947711</a>)</li> <li>Replaced usage of Px class in various compose classes as part of the large refactoring effort to only rely on Dp and primitive types for pixel parameters (<a href="https://android-review.googlesource.com/#/q/I19d02beca10c30e9b6b444be0c2dd21227e30e9c">I19d02</a>)</li> <li>Consolidated CanvasScope implementations so there is now just DrawScope and ContentDrawScope Renamed CanvasScope to DrawScope. Updated DrawScope to implement Density interface and provide LayoutDirection Deleted DrawScope subclass in ContentDrawScope Painter and PainterModifier have been updated to no longer maintain an RTL property themselves as DrawScope provides this already without manually providing it (<a href="https://android-review.googlesource.com/#/q/I1798e4b2b325297c3b5394aa99be3db935e369b7">I1798e</a>)</li> <li>Updated higher level compose APIs that expose a Canvas to expose CanvasScope instead. This removes the need for consumers to maintain their own Paint objects. For consumers that still require access to a Canvas they can use the drawCanvas extension method which provides a callback to issue drawing commands with the underlying Canvas. (<a href="https://android-review.googlesource.com/#/q/I80afdf4c0a648962aa6ef1efc05b1d3b65757094">I80afd</a>)</li> <li>Added verticalGravity and horizontalGravity parameters to Row and Column, respectively. (<a href="https://android-review.googlesource.com/#/q/I7dc5a4e757370075657be68e6eda68e7498228fa">I7dc5a</a>)</li> <li>ui-text module is renamed as ui-text-core (<a href="https://android-review.googlesource.com/#/q/I57dec72ca50e7288e37c9272ef6ce8bcc485a83e">I57dec</a>)</li> <li>Improve DrawModifier API: <ul> <li>Made the receiver scope for draw() ContentDrawScope</li> <li>Removed all parameters on draw()</li> <li>DrawScope has same interface as former CanvasScope</li> <li>ContentDrawScope has drawContent() method (<a href="https://android-review.googlesource.com/#/q/Ibaced5feb8778510b8fe78e96f4fd3da1a6fda50">Ibaced</a>, <a href="https://issuetracker.google.com/issues/152919067">b/152919067</a>)</li> </ul></li> <li><code translate="no" dir="ltr">runOnIdleCompose</code> and <code translate="no" dir="ltr">runOnUiThread</code> are now global functions instead of methods on ComposeTestRule. (<a href="https://android-review.googlesource.com/#/q/Icbe8fd71d52144e855ccb4ce06a4677337be731a">Icbe8f</a>)</li> <li>[Mutable]State property delegate operators moved to extensions to support Kotlin 1.4 property delegate optimizations. Callers must add imports to continue using <code translate="no" dir="ltr">by state { ... }</code> or <code translate="no" dir="ltr">by mutableStateOf(...)</code>. (<a href="https://android-review.googlesource.com/#/q/I5312cf7bdfa072cadc1be2de5d5f45ec53200f41">I5312c</a>)</li> <li>ColoredRect has been deprecated. Use <code translate="no" dir="ltr">Box(Modifier.preferredSize(width, height).drawBackground(color))</code> instead. (<a href="https://android-review.googlesource.com/#/q/I499fa26b66b128943500fbdf9ba490d754adf561">I499fa</a>, <a href="https://issuetracker.google.com/issues/152753731">b/152753731</a>)</li> <li>Replaced Modifier plus operator with factory extension functions (<a href="https://android-review.googlesource.com/#/q/I225e444f50956d84e15ca4f1378b7f805d54e0ca">I225e4</a>)</li> <li>Deprecated Center composable. It should be replaced either with the LayoutSize.Fill + LayoutAlign.Center modifier, or with one of the Box or Stack composables with suitable modifiers applied (<a href="https://android-review.googlesource.com/#/q/Idf5e0d25a2a8764489d738f6fcf242eeb667e124">Idf5e0</a>)</li> <li>Renamed LayoutFlexible to LayoutWeight. Renamed tight parameter to fill. (<a href="https://android-review.googlesource.com/#/q/If4738c70c381e149ded400d657b5efd888ae5891">If4738</a>)</li> <li>The Opacity composable function has been replaced with the drawOpacity modifier. (<a href="https://android-review.googlesource.com/#/q/I5fb62404e20e3f2a0fa94ad0fb121f35d05bbb1c">I5fb62</a>)</li> <li>Tests using AndroidComposeTestRule now provide an animation clock at the root of the composition that allows it to be paused, resumed and advanced manually. (<a href="https://android-review.googlesource.com/#/q/Id54c51482f554cdb512e4eb53c78930408778f94">Id54c5</a>)</li> <li>Support right-to-left direction in LayoutPadding modifier (<a href="https://android-review.googlesource.com/#/q/I9e8da0bfbb135ff7f34b0dc49b905f634ad7d18c">I9e8da</a>)</li> <li>Density and DensityScope were merged into one interface. Instead of ambientDensity() you can now use DensityAmbient.current. Instead of withDensity(density) just with(density) (<a href="https://android-review.googlesource.com/#/q/I11cb1f069a95f32f4ecab631f49d38dc1c071a42">I11cb1</a>)</li> <li>Added copy methods to various inline class types including: <ul> <li>Offset</li> <li>Size</li> <li>Radius</li> <li>Motion</li> <li>TransformOrigin</li> <li>Deprecated Size.copy companion object method favor of instance copy method (<a href="https://android-review.googlesource.com/#/q/Ife2903a0277e051188884cb5d5feefcae8875dd1">Ife290</a>, <a href="https://issuetracker.google.com/issues/159905651">b/159905651</a>)</li> </ul></li> <li>androidx.compose.ViewComposer has been moved to androidx.ui.node.UiComposer androidx.compose.Emittable has been removed. It was redundant with ComponentNode. androidx.compose.ViewAdapters has been removed. They are no longer a supported use case. Compose.composeInto has been deprecated. Use <code translate="no" dir="ltr">setContent</code> or <code translate="no" dir="ltr">setViewContent</code> instead. Compose.disposeComposition has been deprecated. Use the <code translate="no" dir="ltr">dispose</code> method on the <code translate="no" dir="ltr">Composition</code> returned by <code translate="no" dir="ltr">setContent</code> instead. androidx.compose.Compose.subcomposeInto has moved to androidx.ui.core.subcomposeInto ComponentNode#emitInsertAt has been renamed to ComponentNode#insertAt ComponentNode#emitRemoveAt has been renamed to ComponentNode#removeAt ComponentNode#emitMode has been renamed to ComponentNode#move (<a href="https://android-review.googlesource.com/#/q/Idef00fba3a2e67d7034e31d580d69192e9018b5f">Idef00</a>)</li> </ul> <devsite-hats-survey class="nocontent" hats-id="VxqvKSur40kxBYCLVTd0SSGykbno" listnr-id="5207477"></devsite-hats-survey> </div> <devsite-recommendations display="in-page" hidden yield> </devsite-recommendations> <devsite-thumb-rating position="footer"> </devsite-thumb-rating> <devsite-recommendations id="recommendations-link" yield></devsite-recommendations> <div class="devsite-floating-action-buttons"> </div> </article> <devsite-content-footer class="nocontent"> <p>Content and code samples on this page are subject to the licenses described in the <a href="/license">Content License</a>. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.</p> <p>Last updated 2024-11-19 UTC.</p> </devsite-content-footer> <devsite-notification > </devsite-notification> <div class="devsite-content-data"> <template class="devsite-content-data-template"> [[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2024-11-19 UTC."],[],[]] </template> </div> </devsite-content> </main> <devsite-footer-promos class="devsite-footer"> <nav class="devsite-footer-promos nocontent" aria-label="Promotions"> <ul class="devsite-footer-promos-list"> <li class="devsite-footer-promo"> <a href="//x.com/AndroidDev" class="devsite-footer-promo-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer X Promo" > <picture> <source class="devsite-dark-theme" srcset="https://developer.android.com/_static/android/images/logo-x_dt.svg" media="(prefers-color-scheme: dark)" loading="lazy" alt="X"> <img class="devsite-footer-promo-icon" src="/_static/android/images/logo-x.svg" loading="lazy" alt="X"> </picture> <span class="devsite-footer-promo-label"> X </span> </a> <div class="devsite-footer-promo-description">Follow @AndroidDev on X</div> </li> <li class="devsite-footer-promo"> <a href="//www.youtube.com/user/androiddevelopers" class="devsite-footer-promo-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer YouTube Promo" > <picture> <source class="devsite-dark-theme" srcset="https://developer.android.com/_static/android/images/logo-youtube_dt.svg" media="(prefers-color-scheme: dark)" loading="lazy" alt="YouTube"> <img class="devsite-footer-promo-icon" src="//www.gstatic.com/images/icons/material/product/2x/youtube_48dp.png" loading="lazy" alt="YouTube"> </picture> <span class="devsite-footer-promo-label"> YouTube </span> </a> <div class="devsite-footer-promo-description">Check out Android Developers on YouTube</div> </li> <li class="devsite-footer-promo"> <a href="//www.linkedin.com/showcase/androiddev" class="devsite-footer-promo-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer LinkedIn Promo" > <picture> <source class="devsite-dark-theme" srcset="https://developer.android.com/_static/android/images/logo-linkedin_dt.svg" media="(prefers-color-scheme: dark)" loading="lazy" alt="LinkedIn"> <img class="devsite-footer-promo-icon" src="/_static/android/images/logo-linkedin.svg" loading="lazy" alt="LinkedIn"> </picture> <span class="devsite-footer-promo-label"> LinkedIn </span> </a> <div class="devsite-footer-promo-description">Connect with the Android Developers community on LinkedIn</div> </li> </ul> </nav> </devsite-footer-promos> <devsite-footer-linkboxes class="devsite-footer"> <nav class="devsite-footer-linkboxes nocontent" aria-label="Footer links"> <ul class="devsite-footer-linkboxes-list"> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">More Android</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="//www.android.com" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Android </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//www.android.com/enterprise/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > Android for Enterprise </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//www.android.com/security-center/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > Security </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//source.android.com" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > Source </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/news" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)" > News </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//android-developers.googleblog.com/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 6)" > Blog </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/podcasts" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 7)" > Podcasts </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Discover</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="/games" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Gaming </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/ml" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > Machine Learning </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/health-and-fitness" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > Health & Fitness </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/media" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > Camera & Media </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/privacy" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)" > Privacy </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/training/connectivity/5g" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 6)" > 5G </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Android Devices</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="/large-screens" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Large screens </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/wear" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > Wear OS </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/chrome-os" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > ChromeOS devices </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/cars" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > Android for cars </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/tv" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)" > Android TV </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Releases</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="/about/versions/15" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Android 15 </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/about/versions/14" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > Android 14 </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/about/versions/13" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > Android 13 </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/about/versions/12" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > Android 12 </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/about/versions/11" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)" > Android 11 </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/about/versions/10" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 6)" > Android 10 </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/about/versions/pie" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 7)" > Pie </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Documentation and Downloads</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="/studio/intro" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Android Studio guide </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/guide" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > Developers guides </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/reference" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > API reference </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/studio" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > Download Studio </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/ndk" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)" > Android NDK </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Support</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="//issuetracker.google.com/issues/new?component=190923&template=841312" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Report platform bug </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//issuetracker.google.com/issues/new?component=192697" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > Report documentation bug </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//support.google.com/googleplay/android-developer" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > Google Play support </a> </li> <li class="devsite-footer-linkbox-item"> <a href="https://g.co/userresearch/androiddeveloperfooter" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > Join research studies </a> </li> </ul> </li> </ul> </nav> </devsite-footer-linkboxes> <devsite-footer-utility class="devsite-footer"> <div class="devsite-footer-utility nocontent"> <nav class="devsite-footer-sites" aria-label="Other Google Developers websites"> <a href="https://developers.google.com/" class="devsite-footer-sites-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Google Developers Link"> <picture> <source srcset="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/android/images/lockup-google-for-developers-dark-theme.svg" media="(prefers-color-scheme: none)" class="devsite-dark-theme" loading="lazy" alt="Google Developers"> <img class="devsite-footer-sites-logo" src="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/android/images/lockup-google-for-developers.svg" loading="lazy" alt="Google Developers"> </picture> </a> <ul class="devsite-footer-sites-list"> <li class="devsite-footer-sites-item"> <a href="//developer.android.com" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Android Link" > Android </a> </li> <li class="devsite-footer-sites-item"> <a href="//developer.chrome.com/home" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Chrome Link" > Chrome </a> </li> <li class="devsite-footer-sites-item"> <a href="//firebase.google.com" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Firebase Link" > Firebase </a> </li> <li class="devsite-footer-sites-item"> <a href="//cloud.google.com" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Google Cloud Platform Link" > Google Cloud Platform </a> </li> <li class="devsite-footer-sites-item"> <a href="//developers.google.com/products/" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer All products Link" > All products </a> </li> </ul> </nav> <nav class="devsite-footer-utility-links" aria-label="Utility links"> <ul class="devsite-footer-utility-list"> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="//policies.google.com/privacy" data-category="Site-Wide Custom Events" data-label="Footer Privacy link" > Privacy </a> </li> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="/license" data-category="Site-Wide Custom Events" data-label="Footer License link" > License </a> </li> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="/distribute/marketing-tools/brand-guidelines" data-category="Site-Wide Custom Events" data-label="Footer Brand guidelines link" > Brand guidelines </a> </li> <li class="devsite-footer-utility-item glue-cookie-notification-bar-control"> <a class="devsite-footer-utility-link gc-analytics-event" href="#" data-category="Site-Wide Custom Events" data-label="Footer Manage cookies link" aria-hidden="true" > Manage cookies </a> </li> <li class="devsite-footer-utility-item devsite-footer-utility-button"> <span class="devsite-footer-utility-description">Get news and tips by email</span> <a class="devsite-footer-utility-link gc-analytics-event" href="/updates" data-category="Site-Wide Custom Events" data-label="Footer Subscribe link" > Subscribe </a> </li> </ul> <devsite-language-selector> <ul role="presentation"> <li role="presentation"> <a role="menuitem" lang="en" >English</a> </li> <li role="presentation"> <a role="menuitem" lang="de" >Deutsch</a> </li> <li role="presentation"> <a role="menuitem" lang="es_419" >Español – América Latina</a> </li> <li role="presentation"> <a role="menuitem" lang="fr" >Français</a> </li> <li role="presentation"> <a role="menuitem" lang="id" >Indonesia</a> </li> <li role="presentation"> <a role="menuitem" lang="it" >Italiano</a> </li> <li role="presentation"> <a role="menuitem" lang="pl" >Polski</a> </li> <li role="presentation"> <a role="menuitem" lang="pt_br" >Português – Brasil</a> </li> <li role="presentation"> <a role="menuitem" lang="vi" >Tiếng Việt</a> </li> <li role="presentation"> <a role="menuitem" lang="tr" >Türkçe</a> </li> <li role="presentation"> <a role="menuitem" lang="ru" >Русский</a> </li> <li role="presentation"> <a role="menuitem" lang="he" >עברית</a> </li> <li role="presentation"> <a role="menuitem" lang="ar" >العربيّة</a> </li> <li role="presentation"> <a role="menuitem" lang="fa" >فارسی</a> </li> <li role="presentation"> <a role="menuitem" lang="hi" >हिंदी</a> </li> <li role="presentation"> <a role="menuitem" lang="bn" >বাংলা</a> </li> <li role="presentation"> <a role="menuitem" lang="th" >ภาษาไทย</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_cn" >中文 – 简体</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_tw" >中文 – 繁體</a> </li> <li role="presentation"> <a role="menuitem" lang="ja" >日本語</a> </li> <li role="presentation"> <a role="menuitem" lang="ko" >한국어</a> </li> </ul> </devsite-language-selector> </nav> </div> </devsite-footer-utility> <devsite-panel></devsite-panel> </section></section> <devsite-sitemask></devsite-sitemask> <devsite-snackbar></devsite-snackbar> <devsite-tooltip ></devsite-tooltip> <devsite-heading-link></devsite-heading-link> <devsite-analytics> <script type="application/json" analytics>[]</script> <script type="application/json" tag-management>{"at": "True", "ga4": [{"id": "G-QFRN08RN6E", "purpose": 0}], "ga4p": [{"id": "G-QFRN08RN6E", "purpose": 0}], "gtm": [{"id": "GTM-KMSWPCJ", "purpose": 0}], "parameters": {"internalUser": "False", "language": {"machineTranslated": "False", "requested": "en", "served": "en"}, "pageType": "article", "projectName": "Jetpack", "signedIn": "False", "tenant": "android", "recommendations": {"sourcePage": "", "sourceType": 0, "sourceRank": 0, "sourceIdenticalDescriptions": 0, "sourceTitleWords": 0, "sourceDescriptionWords": 0, "experiment": ""}, "experiment": {"ids": ""}}}</script> </devsite-analytics> <devsite-badger></devsite-badger> <android-fully-clickable target=" .android-case-study .devsite-landing-row-item, .android-grouped-resources .devsite-landing-row-item, .android-grouped-resources-primary .devsite-landing-row-item, .android-grouped-resources-secondary .devsite-landing-row-item, .android-guide-cards .devsite-landing-row-item, .android-illustrated-resources-index .devsite-landing-row-item, .android-illustrated-resources-primary .devsite-landing-row-item, .android-illustrated-resources-secondary .devsite-landing-row-item, .android-illustrated-resources-secondary-small .devsite-landing-row-item, .android-illustrated-resources-tertiary .devsite-landing-row-item, .android-illustrated-resources-tertiary-small .devsite-landing-row-item, .android-promo .devsite-landing-row-item, .android-quick-link, .android-samples .devsite-card-wrapper, .fully-clickable" watch=".android-samples, devsite-content"></android-fully-clickable> <script nonce="RVsyQq6/t/jXEk1J4GGe/CWhmwcw/h"> (function(d,e,v,s,i,t,E){d['GoogleDevelopersObject']=i; t=e.createElement(v);t.async=1;t.src=s;E=e.getElementsByTagName(v)[0]; E.parentNode.insertBefore(t,E);})(window, document, 'script', 'https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/android/js/app_loader.js', '[3,"en",null,"/js/devsite_app_module.js","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/android","https://android-dot-devsite-v2-prod.appspot.com",null,null,["/_pwa/android/manifest.json","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/images/video-placeholder.svg","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/android/images/favicon.svg","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/android/images/lockup.svg","https://fonts.googleapis.com/css?family=Google+Sans:400,500,600,700|Google+Sans+Text:400,400italic,500,500italic,600,600italic,700,700italic|Roboto+Mono:400,500,700&display=swap"],1,null,[1,6,8,12,14,17,21,25,50,52,63,70,75,76,80,87,91,92,93,97,98,100,101,102,103,104,105,107,108,109,110,112,113,117,118,120,122,124,125,126,127,129,130,131,132,133,134,135,136,138,140,141,147,148,149,151,152,156,157,158,159,161,163,164,168,169,170,179,180,182,183,186,191,193,196],"AIzaSyAP-jjEJBzmIyKR4F-3XITp8yM9T1gEEI8","AIzaSyB6xiKGDR5O3Ak2okS4rLkauxGUG7XP0hg","developer.android.com","AIzaSyAQk0fBONSGUqCNznf6Krs82Ap1-NV6J4o","AIzaSyCCxcqdrZ_7QMeLCRY20bh_SXdAYqy70KY",null,null,null,["Search__enable_ai_eligibility_checks","Analytics__enable_clearcut_logging","Cloud__enable_cloud_shell_fte_user_flow","MiscFeatureFlags__enable_dark_theme","Cloud__enable_cloud_facet_chat","MiscFeatureFlags__enable_firebase_utm","MiscFeatureFlags__enable_view_transitions","Profiles__require_profile_eligibility_for_signin","Profiles__enable_complete_playlist_endpoint","Cloud__enable_cloudx_ping","Concierge__enable_pushui","MiscFeatureFlags__enable_variable_operator","Profiles__enable_developer_profiles_callout","Profiles__enable_recognition_badges","Cloud__enable_free_trial_server_call","CloudShell__cloud_code_overflow_menu","MiscFeatureFlags__emergency_css","Search__enable_ai_search_summaries","DevPro__enable_developer_subscriptions","DevPro__enable_cloud_innovators_plus","Cloud__enable_cloudx_experiment_ids","MiscFeatureFlags__developers_footer_image","Profiles__enable_completecodelab_endpoint","TpcFeatures__enable_required_headers","Search__enable_suggestions_from_borg","Significatio__enable_by_tenant","Profiles__enable_dashboard_curated_recommendations","Profiles__enable_release_notes_notifications","Profiles__enable_public_developer_profiles","Profiles__enable_awarding_url","Cloud__enable_legacy_calculator_redirect","Cloud__enable_llm_concierge_chat","Cloud__enable_cloud_shell","EngEduTelemetry__enable_engedu_telemetry","CloudShell__cloud_shell_button","Search__enable_page_map","MiscFeatureFlags__enable_project_variables","Experiments__reqs_query_experiments","Profiles__enable_profile_collections","Profiles__enable_page_saving","Search__enable_dynamic_content_confidential_banner","MiscFeatureFlags__developers_footer_dark_image","TpcFeatures__enable_mirror_tenant_redirects","MiscFeatureFlags__enable_explain_this_code","Cloud__enable_cloud_dlp_service","BookNav__enable_tenant_cache_key"],null,null,"AIzaSyBLEMok-5suZ67qRPzx0qUtbnLmyT_kCVE","https://developerscontentserving-pa.googleapis.com","AIzaSyCM4QpTRSqP5qI4Dvjt4OAScIN8sOUlO-k","https://developerscontentsearch-pa.googleapis.com",2,4,null,"https://developerprofiles-pa.googleapis.com",[3,"android","Android Developers","developer.android.com",null,"android-dot-devsite-v2-prod.appspot.com",null,null,[null,1,null,null,null,null,null,null,null,null,null,[1],null,null,null,null,null,null,[1],[1,null,null,[1,20],"/recommendations"],null,null,null,[1,null,1],[1,1,null,1,1]],null,[18,null,null,null,null,null,"/images/lockup.svg","/images/touchicon-180.png",null,null,null,null,null,null,null,null,null,null,null,null,null,1,null,null,null,"/images/lockup-dark-theme.svg",[]],[],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[6,1,14,15,20,22,23,28,29,37,43],null,[[null,null,1],[1,1]],[[null,null,null,null,null,null,null,[["G-QFRN08RN6E"],null,null,[["G-QFRN08RN6E",1]]],null,null,null,null,1],null,[[1,1],[2,2]]],null,4,null,null,null,null,null,null,null,null,null,null,null,null,null,"android.devsite.google"],null,"pk_live_5170syrHvgGVmSx9sBrnWtA5luvk9BwnVcvIi7HizpwauFG96WedXsuXh790rtij9AmGllqPtMLfhe2RSwD6Pn38V00uBCydV4m"]') </script> <devsite-a11y-announce></devsite-a11y-announce> </body> </html>