CINXE.COM

WindowManager  |  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/window"><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/window" /><link rel="alternate" hreflang="x-default" href="https://developer.android.com/jetpack/androidx/releases/window" /><link rel="alternate" hreflang="ar" href="https://developer.android.com/jetpack/androidx/releases/window?hl=ar" /><link rel="alternate" hreflang="bn" href="https://developer.android.com/jetpack/androidx/releases/window?hl=bn" /><link rel="alternate" hreflang="zh-Hans" href="https://developer.android.com/jetpack/androidx/releases/window?hl=zh-cn" /><link rel="alternate" hreflang="zh-Hant" href="https://developer.android.com/jetpack/androidx/releases/window?hl=zh-tw" /><link rel="alternate" hreflang="fa" href="https://developer.android.com/jetpack/androidx/releases/window?hl=fa" /><link rel="alternate" hreflang="fr" href="https://developer.android.com/jetpack/androidx/releases/window?hl=fr" /><link rel="alternate" hreflang="de" href="https://developer.android.com/jetpack/androidx/releases/window?hl=de" /><link rel="alternate" hreflang="he" href="https://developer.android.com/jetpack/androidx/releases/window?hl=he" /><link rel="alternate" hreflang="hi" href="https://developer.android.com/jetpack/androidx/releases/window?hl=hi" /><link rel="alternate" hreflang="id" href="https://developer.android.com/jetpack/androidx/releases/window?hl=id" /><link rel="alternate" hreflang="it" href="https://developer.android.com/jetpack/androidx/releases/window?hl=it" /><link rel="alternate" hreflang="ja" href="https://developer.android.com/jetpack/androidx/releases/window?hl=ja" /><link rel="alternate" hreflang="ko" href="https://developer.android.com/jetpack/androidx/releases/window?hl=ko" /><link rel="alternate" hreflang="pl" href="https://developer.android.com/jetpack/androidx/releases/window?hl=pl" /><link rel="alternate" hreflang="pt-BR" href="https://developer.android.com/jetpack/androidx/releases/window?hl=pt-br" /><link rel="alternate" hreflang="ru" href="https://developer.android.com/jetpack/androidx/releases/window?hl=ru" /><link rel="alternate" hreflang="es-419" href="https://developer.android.com/jetpack/androidx/releases/window?hl=es-419" /><link rel="alternate" hreflang="th" href="https://developer.android.com/jetpack/androidx/releases/window?hl=th" /><link rel="alternate" hreflang="tr" href="https://developer.android.com/jetpack/androidx/releases/window?hl=tr" /><link rel="alternate" hreflang="vi" href="https://developer.android.com/jetpack/androidx/releases/window?hl=vi" /><title>WindowManager &nbsp;|&nbsp; Jetpack &nbsp;|&nbsp; Android Developers</title> <meta property="og:title" content="WindowManager &nbsp;|&nbsp; Jetpack &nbsp;|&nbsp; Android Developers"><meta property="og:url" content="https://developer.android.com/jetpack/androidx/releases/window"><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": "WindowManager" } </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": "WindowManager", "item": "https://developer.android.com/jetpack/androidx/releases/window" }] } </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&#39;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 &amp; plan" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Design &amp; Plan" track-name="design &amp; plan" > Design &amp; Plan </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Design &amp; Plan" track-type="nav" track-metadata-eventdetail="https://developer.android.com/design" track-metadata-position="nav - design &amp; plan" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Design &amp; Plan" track-name="design &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; Plan" track-name="design &amp; plan" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Design &amp; Plan" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Design &amp; 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 &amp; Plan" track-name="design &amp; plan" > <span class="devsite-nav-text" tooltip menu="Design &amp; Plan"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Design &amp; 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 &amp; Media" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Camera &amp; 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 &amp; messaging" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Social &amp; 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 &amp; Fitness" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Health &amp; 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 &amp; Compose libraries" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Jetpack &amp; 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 &amp; 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"> </p> <h1 class="devsite-page-title" style="width:50%" id="windowmanager" data-text="WindowManager" tabindex="-1">WindowManager</h1> <div style="align:right; text-align:right; padding-bottom:21px; margin-top:-45px; border-bottom:1px solid black;"> &nbsp;&nbsp;<a href="https://github.com/android/platform-samples/tree/main/samples/user-interface/windowmanager">Code Sample</a>&nbsp;&nbsp;<a href="/codelabs/android-window-manager-dual-screen-foldables">Codelab</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/window/package-summary">androidx.window</a><br> <a href="/reference/kotlin/androidx/window/core/package-summary">androidx.window.core</a><br> <a href="/reference/kotlin/androidx/window/embedding/package-summary">androidx.window.embedding</a><br> <a href="/reference/kotlin/androidx/window/layout/package-summary">androidx.window.layout</a><br> <a href="/reference/kotlin/androidx/window/testing/layout/package-summary">androidx.window.testing.layout</a><br> </div> </div> <div style="text-align:left; padding-left:10px; margin-left:10px; margin-top:15px; margin-bottom:10px;"> The Jetpack WindowManager library enables application developers to support new device form factors and multi-window environments. The library provides a common API surface for API versions 14 and later. The initial release targets foldable devices, but future versions will extend to more display types and window features. </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>October 16, 2024</td> <td><a href="/jetpack/androidx/releases/window#1.3.0">1.3.0</a></td> <td>-</td> <td>-</td> <td><a href="/jetpack/androidx/releases/window#1.4.0-alpha05">1.4.0-alpha05</a></td> </tr> </table> <h2 id="declaring_dependencies" data-text="Declaring dependencies" tabindex="-1">Declaring dependencies</h2> <p>To add a dependency on WindowManager, you must add the Google Maven repository to your project. Read <a href="/studio/build/dependencies#google-maven">Google&#39;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.window:window:1.3.0"</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-c1">// For Java-friendly APIs to register and unregister callbacks</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.window:window-java:1.3.0"</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-c1">// For RxJava2 integration</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.window:window-rxjava2:1.3.0"</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-c1">// For RxJava3 integration</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.window:window-rxjava3:1.3.0"</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-c1">// For testing</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.window:window-testing:1.3.0"</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.window:window:1.3.0"</span><span class="devsite-syntax-p">)</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-c1">// For Java-friendly APIs to register and unregister callbacks</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.window:window-java:1.3.0"</span><span class="devsite-syntax-p">)</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-c1">// For RxJava2 integration</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.window:window-rxjava2:1.3.0"</span><span class="devsite-syntax-p">)</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-c1">// For RxJava3 integration</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.window:window-rxjava3:1.3.0"</span><span class="devsite-syntax-p">)</span> <span class="devsite-syntax-w"> </span><span class="devsite-syntax-c1">// For testing</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.window:window-testing:1.3.0"</span><span class="devsite-syntax-p">)</span> <span class="devsite-syntax-p">}</span></pre></devsite-code> </section></div> </div> <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:840395%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=840395&template=1412556" 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> </p> <h2 id="version_14_2" data-text="Version 1.4" tabindex="-1">Version 1.4</h2> <h3 id="1.4.0-alpha05" data-text="Version 1.4.0-alpha05" tabindex="-1">Version 1.4.0-alpha05</h3> <p>October 16, 2024</p> <p><code translate="no" dir="ltr">androidx.window:window-*:1.4.0-alpha05</code> is released. Version 1.4.0-alpha05 contains <a href="https://android.googlesource.com/platform/frameworks/support/+log/b6ae8d0a0e8cd803f7b84f30101eda1af4f1d6b6..b8a68b0896897fa158508d73a31998a26161d9a7/window">these commits</a>.</p> <p><strong>New Features</strong></p> <ul> <li>Add convenience functions to get the <code translate="no" dir="ltr">widthDp</code> and <code translate="no" dir="ltr">heightDp</code> from <code translate="no" dir="ltr">WindowMetrics</code>.</li> </ul> <p><strong>API Changes</strong></p> <ul> <li>Add <code translate="no" dir="ltr">widthDp</code> and <code translate="no" dir="ltr">heightDp</code> to <code translate="no" dir="ltr">WindowMetrics</code>. (<a href="https://android-review.googlesource.com/#/q/Ide026a09aade8cbb8af9e042014c88cbbb309335">Ide026</a>)</li> <li>Remove experimental <code translate="no" dir="ltr">WindowInsets</code> API. (<a href="https://android-review.googlesource.com/#/q/I68a71eac60861d081cb6300380cb1099e3fbec37">I68a71</a>)</li> <li>Update bounds check method names to <code translate="no" dir="ltr">isAtLeast</code> (<a href="https://android-review.googlesource.com/#/q/Ib0ab7ae94584f8a11e4c34b8cb8b29ca34c52cb8">Ib0ab7</a>)</li> </ul> <h3 id="1.4.0-alpha04" data-text="Version 1.4.0-alpha04" tabindex="-1">Version 1.4.0-alpha04</h3> <p>October 2, 2024</p> <p><code translate="no" dir="ltr">androidx.window:window-*:1.4.0-alpha04</code> is released. Version 1.4.0-alpha04 contains <a href="https://android.googlesource.com/platform/frameworks/support/+log/cb8fe0a26f0e27cf7f9239f308a1d34a0146bc66..b6ae8d0a0e8cd803f7b84f30101eda1af4f1d6b6/window">these commits</a>.</p> <p><strong>API Changes</strong></p> <ul> <li>Added a method to compute the <code translate="no" dir="ltr">WindowSizeClass</code> from <code translate="no" dir="ltr">WindowMetrics</code>. (<a href="https://android.googlesource.com/platform/frameworks/support/+/874dba6e900ea46c31dec4ea448f5eb8123c513d">874dba</a>)</li> <li>Change the <code translate="no" dir="ltr">WindowSizeClass</code> methods to <code translate="no" dir="ltr">containsWidthDp</code>, <code translate="no" dir="ltr">containsHeightDp</code>, and <code translate="no" dir="ltr">containsWindowSizeDp</code> for clarity. (<a href="https://android.googlesource.com/platform/frameworks/support/+/fa760ddce6f309471c5687bcd68cdf75be23e0f0">fa760d</a>)</li> <li>Convert <code translate="no" dir="ltr">WindowAreaController</code> to abstract base class. (<a href="https://android-review.googlesource.com/#/q/I9089333b0a810881ed409ccfa16783a358e9766e">I90893</a>)</li> </ul> <p><strong>Bug Fixes</strong></p> <ul> <li>Add support for relative bounds when creating a test <code translate="no" dir="ltr">FoldingFeature</code>. (<a href="https://android.googlesource.com/platform/frameworks/support/+/2e6b3e6cb7eccb7bcf79b232c5dc355466af9bec">2e6b3e</a>)</li> <li>General bug fixes when selecting a <code translate="no" dir="ltr">WindowSizeClass</code>.</li> </ul> <h3 id="1.4.0-alpha03" data-text="Version 1.4.0-alpha03" tabindex="-1">Version 1.4.0-alpha03</h3> <p>September 18, 2024</p> <p><code translate="no" dir="ltr">androidx.window:window-*:1.4.0-alpha03</code> is released. Version 1.4.0-alpha03 contains <a href="https://android.googlesource.com/platform/frameworks/support/+log/f1a4862ceeaaa0161261ad24ea72a5430d3090d0..0431b84980e97d6bafdfda7c9038bc4d9529564f/window">these commits</a>.</p> <p><strong>New Features</strong></p> <ul> <li>Add a utility method to get a <code translate="no" dir="ltr">WindowSizeClass</code> from <code translate="no" dir="ltr">WindowMetrics</code>. (<a href="https://android-review.googlesource.com/#/q/I83f1fb0faa8c28c212dec7b6f1628c0fa4a7e736">I83f1f</a>)</li> <li>Rename <code translate="no" dir="ltr">isAtLeast</code> to <code translate="no" dir="ltr">containsBreakpoint</code>. (<a href="https://android-review.googlesource.com/#/q/I85b47cd3fd17000e9c8a35af4dc6b4e315b73a5d">I85b47</a>)</li> <li>Add overload to <code translate="no" dir="ltr">computeWindowSizeClass</code> using floats. (<a href="https://android-review.googlesource.com/#/q/I3dcb254105a286b2edaa38f7be453be024a0a7e4">I3dcb2</a>, <a href="https://issuetracker.google.com/issues/364677934">b/364677934</a>, <a href="https://issuetracker.google.com/issues/364677802">b/364677802</a>, <a href="https://issuetracker.google.com/issues/364680886">b/364680886</a>)</li> </ul> <p><strong>Bug Fixes</strong></p> <ul> <li>Add missing breakpoints to the default <code translate="no" dir="ltr">WindowSizeClass</code> breakpoint set.</li> <li>Fixed a bug where compact dimensions were not being selected correctly in some cases.</li> </ul> <h3 id="1.4.0-alpha02" data-text="Version 1.4.0-alpha02" tabindex="-1">Version 1.4.0-alpha02</h3> <p>September 4, 2024</p> <p><code translate="no" dir="ltr">androidx.window:window-*:1.4.0-alpha02</code> is released. Version 1.4.0-alpha02 contains <a href="https://android.googlesource.com/platform/frameworks/support/+log/9130b719318a69f2f3eaf82c32b131232fd721cb..cb8fe0a26f0e27cf7f9239f308a1d34a0146bc66/window">these commits</a>.</p> <p><strong>New Features</strong></p> <p>Add support for custom <code translate="no" dir="ltr">WindowSizeClass</code>.</p> <ul> <li>Open the constructor for <code translate="no" dir="ltr">WindowSizeClass</code> so devs can use their own.</li> <li>Add <code translate="no" dir="ltr">isAtLeast</code> utility methods so that developers can process a range of <code translate="no" dir="ltr">WindowSizeClass</code> values.</li> <li>Add an extension function on <code translate="no" dir="ltr">Set&lt;WindowSizeClass&gt;</code> to compute the best match from the Set.</li> <li>Add constants for the Android recommended breakpoints.</li> <li>Add the breakpoint set corresponding to the Android recommended breakpoints.</li> </ul> <p><strong>API Changes</strong></p> <ul> <li>Update bounds method names for <code translate="no" dir="ltr">WindowSizeClass</code>. (<a href="https://android-review.googlesource.com/#/q/If89a645d13a20168a2a9af6febf50a21a1012b9a">If89a6</a>)</li> <li>Update the <code translate="no" dir="ltr">WindowSizeClass</code> API to support adding new breakpoint values in the future. Instead of having absolute bounds we use the lower bounds and recommend devs use lower bound checks when processing a <code translate="no" dir="ltr">WindowSizeClass</code>. The existing <code translate="no" dir="ltr">WindowWidthSizeClass</code> and <code translate="no" dir="ltr">WindowHeightSizeClass</code> will be deprecated as they will not be developed further. (<a href="https://android-review.googlesource.com/#/q/I014cef212823dc5dfa8bb430fdbe0b505f0b81ff">I014ce</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>August 7, 2024</p> <p><code translate="no" dir="ltr">androidx.window:window-*:1.4.0-alpha01</code> is released. Version 1.4.0-alpha01 contains <a href="https://android.googlesource.com/platform/frameworks/support/+log/c50bbb6627cd345df69ae3c3e7f4a133dec7fe48..9130b719318a69f2f3eaf82c32b131232fd721cb/window">these commits</a>.</p> <p><strong>New Features</strong></p> <ul> <li><strong>ActivityStack Pinning</strong> allows apps to pin the content in one container and have its navigation isolated from the other container.</li> <li><strong>Interactive Divider</strong> allows apps to display a fixed or draggable divider between the two activities in a split presentation.</li> <li><strong>Fullscreen Dialog Dimming</strong> allows apps to specify the dialog dim area, to either dim the entire task window or only dim the container that shows the dialog.</li> <li><strong>Embedded Activity Window Info Callback</strong> allows apps to continuously receive updates of the embedded activity window.</li> <li><strong>Embedding Animation Background</strong> allows apps to specify the animation background, improving the transition animation quality when <code translate="no" dir="ltr">ActivityEmbedding</code> is used.</li> <li><strong>Improved ActivityStack Management</strong> allows apps to have more control over the <code translate="no" dir="ltr">ActivityStacks</code> when <code translate="no" dir="ltr">ActivityEmbedding</code> is used, including:</li> <li>Launching an activity into a specified <code translate="no" dir="ltr">ActivityStack</code></li> <li>Finishing an <code translate="no" dir="ltr">ActivityStack</code></li> </ul> <p><strong>API Changes</strong></p> <ul> <li><p>A new API <code translate="no" dir="ltr">WindowInfoTracker#supportedPostures</code>:</p> <ul> <li>An API to determine if the device supports TableTop mode for foldables. Adds WindowAreaSessionPresenter#getWindow</li> </ul></li> <li><p>Add APIs to support <code translate="no" dir="ltr">ActivityStack</code> pinning:</p> <ul> <li><code translate="no" dir="ltr">SplitPinRule</code> class</li> <li><code translate="no" dir="ltr">SplitController#pinTopActivityStack</code></li> <li><code translate="no" dir="ltr">SplitController#unpinTopActivityStack</code></li> </ul></li> <li><p>Add APIs to enable and configure the interactive divider</p> <ul> <li><code translate="no" dir="ltr">DividerAttributes</code> class</li> <li><code translate="no" dir="ltr">SplitAttributes.Builder#setDividerAttributes</code></li> </ul></li> <li><p>Add APIs to set <code translate="no" dir="ltr">EmbeddingConfiguration</code> and <code translate="no" dir="ltr">DimAreaBehavior</code> for dialogs</p> <ul> <li><code translate="no" dir="ltr">EmbeddingConfiguration</code> class</li> <li><code translate="no" dir="ltr">DimAreaBehavior</code> class</li> <li><code translate="no" dir="ltr">ActivityEmbeddingController#setEmbeddingConfiguration</code></li> </ul></li> <li><p>Add APIs to receive embedded activity window info updates</p> <ul> <li><code translate="no" dir="ltr">EmbeddedActivityWindowInfo</code> class</li> <li><code translate="no" dir="ltr">ActivityEmbeddingController#embeddedActivityWindowInfo</code></li> </ul></li> <li><p>Add APIs to set embedding animation background</p> <ul> <li><code translate="no" dir="ltr">EmbeddingAnimationBackground</code></li> <li><code translate="no" dir="ltr">SplitAttributes.Builder#setAnimationBackground</code></li> </ul></li> <li><p>Add APIs to finish <code translate="no" dir="ltr">ActivityStacks</code></p> <ul> <li><code translate="no" dir="ltr">ActivityEmbeddingController#finishActivityStacks</code></li> </ul></li> <li><p>Add APIs to set launching <code translate="no" dir="ltr">ActivityStack</code></p> <ul> <li><code translate="no" dir="ltr">ActivityEmbeddingOptions#setLaunchingActivityStack</code></li> </ul></li> <li><p>The following APIs are stable and no longer experimental:</p> <ul> <li><code translate="no" dir="ltr">ActivityEmbeddingController#invalidateVisibleActivityStacks</code> (moved from SplitController#invalidateTopVisibleSplitAttributes)</li> <li><code translate="no" dir="ltr">ActivityEmbeddingController#getActivityStack</code></li> <li><code translate="no" dir="ltr">SplitController#updateSplitAttributes</code></li> </ul></li> <li><p>Add APIs for 1.4. (<a href="https://android-review.googlesource.com/#/q/I567747b6a039b2c00183107a301842db3b6d77f4">I56774</a>)</p></li> </ul> <p><strong>Bug Fixes</strong></p> <ul> <li>Fixes bug on certain devices where UNAVAILABLE would be returned instead of ACTIVE when a session is active.</li> <li>Removes support for <code translate="no" dir="ltr">transferActivityToWindowArea</code> on devices with a <code translate="no" dir="ltr">vendorApiLevel</code> of 2 due to unstable API support.</li> <li>Introduce API to enable drag-to-fullscreen for Activity Embedding draggable divider. (<a href="https://android-review.googlesource.com/#/q/I645c92453fed1f59d20a8f2e9bb3df7118576511">I645c9</a>)</li> <li>Allow apps to disable <code translate="no" dir="ltr">ActivityEmbedding</code> animations via animation params for <code translate="no" dir="ltr">SplitAttributes</code>. (<a href="https://android-review.googlesource.com/#/q/Idc01a0d4a13321f8de21806693b67ebdeb283fc2">Idc01a</a>)</li> <li>Removed manual outlining of access to new platform APIs since this happens automatically via API modeling when using R8 with AGP 7.3 or later (e.g. R8 version 3.3) and for all builds when using AGP 8.1 or later (e.g. D8 version 8.1). Clients who are not using AGP are advised to update to D8 version 8.1 or later. See <a href="https://medium.com/androiddevelopers/mitigating-soft-verification-issues-in-r8-and-d8-7e9e06827dfd">this article</a> for more details. (<a href="https://android-review.googlesource.com/#/q/Ia60e0ab9f0fd613883a772c8aa34e27cc986cae8">Ia60e0</a>, <a href="https://issuetracker.google.com/issues/345472586">b/345472586</a>)</li> <li>Allow extensions to take animation params for <code translate="no" dir="ltr">SplitAttributes</code> so that the device can use it for animation transitions. (<a href="https://android-review.googlesource.com/#/q/Iede006641fa40fe036cb1eb3c2a858a194b80f05">Iede00</a>)</li> <li>Hide overlay APIs (<a href="https://android-review.googlesource.com/#/q/Ic4251735cb5869a2152c2389af350288d9f74710">Ic4251</a>)</li> <li>Introduce APIs to configure the fixed or draggable divider for the split (<a href="https://android-review.googlesource.com/#/q/Ia7a78dd767ea32edc4c8971b61bc136c16214c4f">Ia7a78</a>)</li> <li>Added density to <code translate="no" dir="ltr">WindowMetrics</code> (<a href="https://android-review.googlesource.com/#/q/Id6723149c9ba7f3aa924ef53f0ae9a21e5f8c7c8">Id6723</a>)</li> <li>Add API to get the <code translate="no" dir="ltr">SupportedPostures</code>. (<a href="https://android-review.googlesource.com/#/q/If557a7c17ae8f3473f1ab81520038848c11f775c">If557a</a>)</li> <li>Remove <code translate="no" dir="ltr">setLaunchingActivityStack</code> from experimental API (<a href="https://android-review.googlesource.com/#/q/I191cf1aaa2e94724a9f82bea3d178a2889178319">I191cf</a>)</li> <li>Introduce <code translate="no" dir="ltr">ActivityEmbeddingController#embeddedActivityWindowInfo</code> (<a href="https://android-review.googlesource.com/#/q/I243121796a50d3c96e4852dbf83aa1f5cc1eea6e">I24312</a>)</li> <li>Deprecate <code translate="no" dir="ltr">#getToken</code> and add <code translate="no" dir="ltr">#getActivityStackToken</code> (<a href="https://android-review.googlesource.com/#/q/Ie047116259409389ae6c544929f50a6a8114774a">Ie0471</a>)</li> <li>Introduce callback adapter for <code translate="no" dir="ltr">embeddedActivityWindowInfo</code> flow API (<a href="https://android-review.googlesource.com/#/q/Ida77f3109a0bf624c445162834d7e2019d0bf601">Ida77f</a>)</li> <li>Add callback adapter for overlayInfo flow API (<a href="https://android-review.googlesource.com/#/q/I7264f347c5ceaf44ed65335c573d67fd2300b3d8">I7264f</a>)</li> <li>Introduce <code translate="no" dir="ltr">WindowSdkExtensionsRule</code> to override <code translate="no" dir="ltr">extensionsVersion</code> for testing. (<a href="https://android-review.googlesource.com/#/q/Ifb9285d4851195d02895bd510d7a8a32aa91057c">Ifb928</a>)</li> <li>- Migrate <code translate="no" dir="ltr">#setLaunchingActivityStack</code> to Bundle to compat with <code translate="no" dir="ltr">ActivityOptionsCompat</code> usages. <ul> <li>Users should pass <code translate="no" dir="ltr">activityOptions.toBundle</code> instead of <code translate="no" dir="ltr">ActvityOptions</code> itself.</li> <li>Remove <code translate="no" dir="ltr">#setLaunchingActivityStack(Activity)</code>. Users should migrate to use <code translate="no" dir="ltr">ActivityEmbeddingController#getActivityStac(Activity)</code> to get an <code translate="no" dir="ltr">ActivityStack</code>, and pass the <code translate="no" dir="ltr">ActivityStack</code> to <code translate="no" dir="ltr">#setLaunchingActivityStack</code>. (<a href="https://android-review.googlesource.com/#/q/Ie0ccc35e5459c9031d6890185d6472388eb68320">Ie0ccc</a>)</li> </ul></li> <li>- Introduce <code translate="no" dir="ltr">ActivityStack.Token</code> and <code translate="no" dir="ltr">SpltInfo.Token</code> as an identifier to communicate between WM Jetpack and extensions. <ul> <li>Deprecate/Replace APIs to take/return Token instead of IBinder. (<a href="https://android-review.googlesource.com/#/q/I12b24006a004e9c361554e21bb9a7564b27da406">I12b24</a>)</li> </ul></li> <li>- Introduce <code translate="no" dir="ltr">ActivityEmbeddingController#invalidateVisibleActivityStacks</code> <ul> <li>Remove <code translate="no" dir="ltr">SplitController#invalidateTopVisibleSplitAttributes</code> because the feature is consolidate to <code translate="no" dir="ltr">#invalidateVisibleActivityStacks</code> (<a href="https://android-review.googlesource.com/#/q/I02ef5fed3ab71287e23f5bf5ac2b5a124fd2a0ed">I02ef5</a>)</li> </ul></li> <li>- Adding API to set embedding configuration. (<a href="https://android-review.googlesource.com/#/q/I59a4a238e0ec3bb207b8ddf7862ca613c1d1cf58">I59a4a</a>)</li> <li>- Adding pin/unpin top <code translate="no" dir="ltr">ActivityStack</code> <code translate="no" dir="ltr">androidx.Window</code> APIs <ul> <li>Updating demo app to allow pin/unpin top <code translate="no" dir="ltr">ActivityStack</code> (<a href="https://android-review.googlesource.com/#/q/I24dd34679d9540d9f2b0d6d7fa87635ef9d43155">I24dd3</a>)</li> </ul></li> <li>Re-add <code translate="no" dir="ltr">#finishActivityStacks</code> and <code translate="no" dir="ltr">ActivityEmbeddingOptions</code> (<a href="https://android-review.googlesource.com/#/q/Ic1ab39e9c5a3f9833f8112e847cac7bdf2b27cd8">Ic1ab3</a>)</li> <li>Remove unstable APIs. (<a href="https://android-review.googlesource.com/#/q/Ibc534a8ba5f81f0fdcde569335a581e605d1c69e">Ibc534</a>, <a href="https://issuetracker.google.com/issues/302380585">b/302380585</a>)</li> </ul> <h2 id="version_13_2" data-text="Version 1.3" tabindex="-1">Version 1.3</h2> <h3 id="1.3.0" data-text="Version 1.3.0" tabindex="-1">Version 1.3.0</h3> <p>May 29, 2024</p> <p><code translate="no" dir="ltr">androidx.window:window-*:1.3.0</code> is released. Version 1.3.0 contains <a href="https://android.googlesource.com/platform/frameworks/support/+log/0ef82c0673456addf3c611f9081d4d8cbbcf1c62..c50bbb6627cd345df69ae3c3e7f4a133dec7fe48/window">these commits</a>.</p> <p><strong>Important changes since 1.2.0</strong></p> <ul> <li>Kotlin Multiplatform support for Window Size Classes.</li> </ul> <h3 id="1.3.0-rc01" data-text="Version 1.3.0-rc01" tabindex="-1">Version 1.3.0-rc01</h3> <p>May 14, 2024</p> <p><code translate="no" dir="ltr">WindowManager</code> Jetpack 1.3 brings Kotlin Multiplatform support for <code translate="no" dir="ltr">WindowSizeClass</code> features as well as multiple bug fixes.</p> <p><code translate="no" dir="ltr">androidx.window:window-*:1.3.0-rc01</code> is released. Version 1.3.0-rc01 contains <a href="https://android.googlesource.com/platform/frameworks/support/+log/fbd1ac175922f44c69a13545d194066ee428b342..0ef82c0673456addf3c611f9081d4d8cbbcf1c62/window">these commits</a>.</p> <h3 id="1.3.0-beta02" data-text="Version 1.3.0-beta02" tabindex="-1">Version 1.3.0-beta02</h3> <p>May 1, 2024</p> <p><code translate="no" dir="ltr">androidx.window:window-*:1.3.0-beta02</code> is released. Version 1.3.0-beta02 contains <a href="https://android.googlesource.com/platform/frameworks/support/+log/02b55f664eba38e42e362e1af3913be1df552d55..fbd1ac175922f44c69a13545d194066ee428b342/window">these commits</a>.</p> <p><strong>API Changes</strong></p> <ul> <li>Remove support for creating and using custom <code translate="no" dir="ltr">WindowSizeClass</code>&#39;s. (<a href="https://android-review.googlesource.com/#/q/Id1143662800446f3868a5324a2f647956610a84e">Id1143</a>)</li> </ul> <p><strong>Bug Fixes</strong></p> <ul> <li>Fixes <code translate="no" dir="ltr">KotlinReflectionInternalError</code> caused by proguard stripping out some files on certain device implementations. (<a href="https://android-review.git.corp.google.com/c/platform/frameworks/support/+/3059406">I01b02</a>)</li> </ul> <h3 id="1.3.0-beta01" data-text="Version 1.3.0-beta01" tabindex="-1">Version 1.3.0-beta01</h3> <p>April 3, 2024</p> <p><code translate="no" dir="ltr">androidx.window:window-*:1.3.0-beta01</code> is released. Version 1.3.0-beta01 contains <a href="https://android.googlesource.com/platform/frameworks/support/+log/638a8d3a474af45f6ad5fdc3d6d1836ea42d1778..02b55f664eba38e42e362e1af3913be1df552d55/window">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>March 6, 2024</p> <p><code translate="no" dir="ltr">androidx.window:window-*:1.3.0-alpha03</code> is released. Version 1.3.0-alpha03 contains <a href="https://android.googlesource.com/platform/frameworks/support/+log/ca2a8cf8da3a3502fccc593974f8085653e38261..638a8d3a474af45f6ad5fdc3d6d1836ea42d1778/window">these commits</a>.</p> <p><strong>API Changes</strong></p> <ul> <li>Split <code translate="no" dir="ltr">WindowSizeClassUtil</code> into more focused methods. (<a href="https://android-review.googlesource.com/#/q/Ie929241cd5acc56ecf352590f03374f2165b4e31">Ie9292</a>)</li> <li>Restore <code translate="no" dir="ltr">WindowSizeClass#compute</code> (<a href="https://android-review.googlesource.com/#/q/I213553e2526ff370b02f9c1a7943252faa918be3">I21355</a>, <a href="https://issuetracker.google.com/issues/324293374">b/324293374</a>)</li> </ul> <p><strong>Bug Fixes</strong></p> <ul> <li>Fixes crash where the context provided wasn&#39;t being unwrapped correctly. (<a href="https://android-review.googlesource.com/#/q/Id97daf9f78c33aedb73a1e481d7486b00e70af46">94d10ce</a> , <a href="https://issuetracker.google.com/issues/318787482">b/318787482</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>February 7, 2024</p> <p><code translate="no" dir="ltr">androidx.window:window-*:1.3.0-alpha02</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/312eb9f1ddece3a18317f18515a877e0e745cb2c..ca2a8cf8da3a3502fccc593974f8085653e38261/window">Version 1.3.0-alpha02 contains these commits.</a></p> <p><strong>New Features</strong></p> <ul> <li>Updates made to the API surface of the Window Size Class API&#39;s to improve flexibility for developers who want to use their own size classes.</li> </ul> <p><strong>API Changes</strong></p> <ul> <li>Add height constraints to the width selector. (<a href="https://android-review.googlesource.com/#/q/I2339319ad7edd567d661cd6e828e16247cf311e1">I23393</a>)</li> <li>Add utility functions for picking a <code translate="no" dir="ltr">WindowSizeClass</code> from a set. Add experimental scoring functions so developers can write their own selectors. Add a selector extension function to pick the widest <code translate="no" dir="ltr">WindowSizeClass</code> within a given bound. (<a href="https://android-review.googlesource.com/#/q/I0c944f0ad6cf4bf4e04886ebbc60b6bde0e6e27d">I0c944</a>)</li> <li>Open the <code translate="no" dir="ltr">WindowSizeClass</code> constructor so custom breakpoints can be added. (<a href="https://android-review.googlesource.com/#/q/Ic1ff3f438cc9eacec87fbdb1288f31cf10edf9e0">Ic1ff3</a>)</li> <li>Add convenience function to create size class from width, height, and density. (<a href="https://android-review.googlesource.com/#/q/If67f47857f31d412f1007ef5ac734d462b642e2d">If67f4</a>)</li> </ul> <p><strong>Bug Fixes</strong></p> <ul> <li>Fix exception when float value is truncated to 0. (<a href="https://android-review.googlesource.com/#/q/I59fa9997695c03cd68cc82349801edc7450145b1">272ffac</a>)</li> </ul> <h3 id="1.3.0-alpha01" data-text="Version 1.3.0-alpha01" tabindex="-1">Version 1.3.0-alpha01</h3> <p>November 15, 2023</p> <p><code translate="no" dir="ltr">androidx.window:window-*:1.3.0-alpha01</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/312eb9f1ddece3a18317f18515a877e0e745cb2c/window">Version 1.3.0-alpha01 contains these commits.</a></p> <p><strong>New Features</strong></p> <ul> <li>Expose experimental window APIs for accessing the rear screen.</li> <li>Test APIs for creating a <code translate="no" dir="ltr">FoldingFeature</code> is now stable.</li> <li>Test APIs for setting up fake <code translate="no" dir="ltr">ActivityEmbedding</code> values are now stable.</li> <li><code translate="no" dir="ltr">WindowLayoutInfoPublisherRule</code> now reports the override when obtaining a value from a <code translate="no" dir="ltr">UiContext</code>.</li> <li><code translate="no" dir="ltr">WindowInfoTracker</code> reports folding feature data to <code translate="no" dir="ltr">UiContext</code> parameters.</li> <li>Expose the Extensions Version on the device.</li> <li><code translate="no" dir="ltr">WindowProperties</code> constants for user per-app overrides: <ul> <li><code translate="no" dir="ltr">PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE</code> &mdash; Informs the system the app has opted out of the user-facing aspect ratio compatibility override.</li> <li><code translate="no" dir="ltr">PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE</code>&mdash; Informs the system the app has opted out of the full-screen option of the user aspect ratio compatibility override settings</li> </ul></li> </ul> <h2 id="version_12_2" data-text="Version 1.2" tabindex="-1">Version 1.2</h2> <h3 id="1.2.0" data-text="Version 1.2.0" tabindex="-1">Version 1.2.0</h3> <p>November 15, 2023</p> <p><code translate="no" dir="ltr">androidx.window:window-*:1.2.0</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/06e4d421091d61357319a483cbc0e42ee323eced..773c9e51174927e05d2fb969a9652753345d22d5/window">Version 1.2.0 contains these commits.</a></p> <p><strong>Important changes since 1.1.0</strong></p> <ul> <li>Expose experimental window APIs for accessing the rear screen.</li> <li>Test APIs for creating a <code translate="no" dir="ltr">FoldingFeature</code> is now stable.</li> <li>Test APIs for setting up fake <code translate="no" dir="ltr">ActivityEmbedding</code> values are now stable.</li> <li><code translate="no" dir="ltr">WindowLayoutInfoPublisherRule</code> now reports the override when obtaining a value from a <code translate="no" dir="ltr">UiContext</code>.</li> <li><code translate="no" dir="ltr">WindowInfoTracker</code> reports folding feature data to <code translate="no" dir="ltr">UiContext</code> parameters.</li> <li>Expose the Extensions Version on the device.</li> </ul> <h3 id="1.2.0-rc01" data-text="Version 1.2.0-rc01" tabindex="-1">Version 1.2.0-rc01</h3> <p>November 1, 2023</p> <p><code translate="no" dir="ltr">androidx.window:window-*:1.2.0-rc01</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/465c5c5b7a0d79793bddb26a695f67aba8ea2f7e..06e4d421091d61357319a483cbc0e42ee323eced/window">Version 1.2.0-rc01 contains these commits.</a></p> <p><strong>New Features</strong></p> <ul> <li>Expose experimental window APIs for accessing the rear screen.</li> <li>Test APIs for creating a <code translate="no" dir="ltr">FoldingFeature</code> is now stable.</li> <li>Test APIs for setting up fake <code translate="no" dir="ltr">ActivityEmbedding</code> values are now stable.</li> <li><code translate="no" dir="ltr">WindowLayoutInfoPublisherRule</code> now reports the override when obtaining a value from a <code translate="no" dir="ltr">UiContext</code>.</li> <li><code translate="no" dir="ltr">WindowInfoTracker</code> reports folding feature data to <code translate="no" dir="ltr">UiContext</code> parameters.</li> <li>Expose the Extensions Version on the device.</li> </ul> <h3 id="1.2.0-beta04" data-text="Version 1.2.0-beta04" tabindex="-1">Version 1.2.0-beta04</h3> <p>October 18, 2023</p> <p><code translate="no" dir="ltr">androidx.window:window-*:1.2.0-beta04</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/91bb8c1f81dcb031bda00fcd8e55f1e890b56f06..465c5c5b7a0d79793bddb26a695f67aba8ea2f7e/window">Version 1.2.0-beta04 contains these commits.</a></p> <p><strong>API Changes</strong></p> <ul> <li>Remove unstable APIs. (<a href="https://android-review.googlesource.com/#/q/Ibc534a8ba5f81f0fdcde569335a581e605d1c69e">Ibc534</a>, <a href="https://issuetracker.google.com/issues/302380585">b/302380585</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>September 20, 2023</p> <p><code translate="no" dir="ltr">androidx.window:window-*:1.2.0-beta03</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/aee513bb6c09a651ba4c537a3d054395349a10ed..91bb8c1f81dcb031bda00fcd8e55f1e890b56f06/window">Version 1.2.0-beta03 contains these commits.</a></p> <p><strong>New Features</strong></p> <ul> <li>Add <code translate="no" dir="ltr">RequiresApi</code> checks for APIs that need a specific version of extensions to function correctly.</li> <li>Add an API to expose the extensions version on the device.</li> </ul> <p><strong>API Changes</strong></p> <ul> <li>Annotate required window SDK extension version on public APIs. <ul> <li>Remove <code translate="no" dir="ltr">isXXXSupported</code> in the Activity Embedding component. (<a href="https://android-review.googlesource.com/#/q/Ie3dae75663e9b67b03182d2d60dfc365dff5a1dc">Ie3dae</a>)</li> </ul></li> <li>Introduce <code translate="no" dir="ltr">WindowSdkExtensions</code> to report the extension version on the device. <ul> <li>Introduce <code translate="no" dir="ltr">RequiresWindowSdkExtension</code> to annotate the minimum required extension version. (<a href="https://android-review.googlesource.com/#/q/I05fd41eea44fcdf1dd5f7366677339a09db22b76">I05fd4</a>)</li> </ul></li> <li>Makes <code translate="no" dir="ltr">WindowAreaInfo#getCapability</code> non-nullable. (<a href="https://android-review.googlesource.com/#/q/I17048df0d2fbac0751bab031d9fa38d0eefd00e7">I17048</a>)</li> </ul> <h3 id="1.2.0-beta01" data-text="Version 1.2.0-beta01" tabindex="-1">Version 1.2.0-beta01</h3> <p>July 26, 2023</p> <p><code translate="no" dir="ltr">androidx.window:window-*:1.2.0-beta01</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/3b5b931546a48163444a9eddc533489fcddd7494..aee513bb6c09a651ba4c537a3d054395349a10ed/window">Version 1.2.0-beta01 contains these commits.</a></p> <p><strong>New Features</strong></p> <ul> <li>Expose experimental window APIs for accessing the rear screen.</li> <li>Test APIs for creating a <code translate="no" dir="ltr">FoldingFeature</code> is now stable.</li> <li>Test APIs for setting up fake <code translate="no" dir="ltr">ActivityEmbedding</code> values are now stable.</li> <li><code translate="no" dir="ltr">WindowLayoutInfoPublisherRule</code> now reports the override when obtaining a value from a <code translate="no" dir="ltr">UiContext</code>.</li> <li><code translate="no" dir="ltr">WindowInfoTracker</code> reports folding feature data to <code translate="no" dir="ltr">UiContext</code> parameters.</li> </ul> <p><strong>API Changes</strong></p> <ul> <li>Marks <code translate="no" dir="ltr">WindowArea</code> API&#39;s as experimental to allow API changes to continue for a stable release in 1.3 (<a href="https://android-review.googlesource.com/#/q/I857f50abe5a893e7c036cffe0e2ff7d4050f6c9c">I857f5</a>)</li> <li>Updated API files to annotate compatibility suppression (<a href="https://android-review.googlesource.com/#/q/I8e87ae292b38fac1886001f5317acda1592f174b">I8e87a</a>, <a href="https://issuetracker.google.com/issues/287516207">b/287516207</a>)</li> </ul> <h3 id="1.2.0-alpha03" data-text="Version 1.2.0-alpha03" tabindex="-1">Version 1.2.0-alpha03</h3> <p>June 21, 2023</p> <p><code translate="no" dir="ltr">androidx.window:window-*:1.2.0-alpha03</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/73f902dee011bfe400d8a0330bfd8d4bb632065f..3b5b931546a48163444a9eddc533489fcddd7494/window">Version 1.2.0-alpha03 contains these commits.</a></p> <p><strong>New Features</strong></p> <ul> <li>Removing deprecated APIs from the API surface.</li> <li>Add APIs to support concurrent displays.</li> <li>Add a property to opt out of forced resize override.</li> <li>Add property to opt out of min aspect ratio override.</li> <li>Stabilize <code translate="no" dir="ltr">ActivityEmbeddingRule</code> to support unit testing around Activity Embedding.</li> </ul> <p><strong>API Changes</strong></p> <ul> <li>Remove deprecated APIs (<a href="https://android-review.googlesource.com/#/q/I18d39bf6b92aabbb8a7335a8aef35ab2b6ca81d3">I18d39</a>)</li> <li>Add support for concurrent displays. (<a href="https://android-review.googlesource.com/#/q/Ifcbb04c397686ac8d2d1dd833d67ce6e6b6f56ec">Ifcbb0</a>)</li> </ul> <p><strong>Bug Fixes</strong></p> <ul> <li>Adding opt-out compat property for force resize override (<a href="https://android-review.googlesource.com/#/q/Ie7ab1fecfa45b3ef1bc7a62995dd2ef30947154f">Ie7ab1</a>)</li> <li>Removes <code translate="no" dir="ltr">SESSION_STATE_CONTENT_INVISIBLE</code> from extensions interface. (<a href="https://android-review.googlesource.com/#/q/I6ed198517d14371a16ef41c276308403522cacc0">I6ed19</a>)</li> <li>Stabilize <code translate="no" dir="ltr">ActivityEmbeddingRule</code> to support unit testing around Activity embedding. (<a href="https://android-review.googlesource.com/#/q/I8d6b66ee5d79792fb5ef737c0818dbff2f590354">I8d6b6</a>)</li> <li>Adding opt-out compat property for min aspect ratio override. (<a href="https://android-review.googlesource.com/#/q/I663907d38aa69ae6fab57fd89a41654673dde4cd">I66390</a>)</li> <li>Removes deprecated WindowArea API&#39;s (<a href="https://android-review.googlesource.com/#/q/Ieb67c84ff436c0a09d22b9e3f566746e51e777ca">Ieb67c</a>)</li> <li>Rename orientation request loop property to <code translate="no" dir="ltr">PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED</code>. (<a href="https://android-review.googlesource.com/#/q/Ie2fbded0e86b922755f0f916ad1c39c05a247cce">Ie2fbd</a>)</li> <li>Updates window area session constant names (<a href="https://android-review.googlesource.com/#/q/I8367506c3a871d6bcf59e654967aa5b0b59fedfb">I83675</a>)</li> <li>Adding opt-out compat property that ignores orientation request loop when detected (<a href="https://android-review.googlesource.com/#/q/I0a7a2feaaa1bd5eb3b1071dbed038828e444a0ba">I0a7a2</a>)</li> <li>Add <code translate="no" dir="ltr">WindowAreaComponent#STATUS_ACTIVE</code> to signify that the feature is already active. (<a href="https://android-review.googlesource.com/#/q/I62bc30d1effe5ecd76591beea4e35ba8b225755f">I62bc3</a>)</li> <li>Add <code translate="no" dir="ltr">RearDisplayPresentationMode</code> APIs (<a href="https://android-review.googlesource.com/#/q/I0401c4abe23a95620e35808000146da11da06faa">I0401c</a>)</li> <li>Remove background color API for stable. (<a href="https://android-review.googlesource.com/#/q/I34c3ecf8bbb63a0229633268c58a67da9dc51642">I34c3e</a>)</li> <li>Hide Window Area APIs. (<a href="https://android-review.googlesource.com/#/q/I39de0de444eb61393bb597baedbfa5b1278ee900">I39de0</a>)</li> <li>Add methods to override the <code translate="no" dir="ltr">SplitInfo</code> in <code translate="no" dir="ltr">SplitController</code>. Add test methods to create double for <code translate="no" dir="ltr">SplitInfo</code> and <code translate="no" dir="ltr">ActivityStack</code>. (<a href="https://android-review.googlesource.com/#/q/Icd69f1d06e0470425d6126906bcac3fa3540430d">Icd69f</a>)</li> <li>Make tag optional for <code translate="no" dir="ltr">ActivityRule.Builder</code>. (<a href="https://android-review.googlesource.com/#/q/Ib0b449169f9a72c5affd25123d3220e55dcbf532">Ib0b44</a>)</li> <li>Remove <code translate="no" dir="ltr">RatioSplitType</code>, <code translate="no" dir="ltr">ExpandContainersSplit</code> and <code translate="no" dir="ltr">HingeSplitType</code>. They are <code translate="no" dir="ltr">SplitType</code> now. <ul> <li>Replace <code translate="no" dir="ltr">#splitEqually()</code>, <code translate="no" dir="ltr">#expandContainers()</code> and <code translate="no" dir="ltr">#splitByHinge</code> to constant <code translate="no" dir="ltr">SplitType SPLIT_TYPE_EQUAL</code>, <code translate="no" dir="ltr">SPLIT_TYPE_EXPAND</code> and <code translate="no" dir="ltr">SPLIT_TYPE_HINGE</code></li> <li>Remove the functionality to set fallback type of hinge split type. If the hinge split type cannot be applied due to the current device or window state, it fallbacks to split the parent task container equally. Use <code translate="no" dir="ltr">SplitController#setSplitAttributesCalculator</code> to customize the fallback split type. (<a href="https://android-review.googlesource.com/#/q/Ifcc59d8ad1ea8fd7de04b65c597fff20f024bc13">Ifcc59</a>)</li> </ul></li> <li>Deprecate <code translate="no" dir="ltr">add</code>/<code translate="no" dir="ltr">removeSplitCallback</code> <ul> <li>Move <code translate="no" dir="ltr">add</code>/<code translate="no" dir="ltr">removeSplitCallback</code> to <code translate="no" dir="ltr">SplitControllerCallbackAdapter</code></li> <li>Add <code translate="no" dir="ltr">Flow</code> support to get <code translate="no" dir="ltr">SplitInfo</code> list (<a href="https://android-review.googlesource.com/#/q/I7f1b6eab2a463c466045dff9f1ef41da1f380285">I7f1b6</a>)</li> </ul></li> <li>Add a test rule for <code translate="no" dir="ltr">ActivityEmbeddingController</code> (<a href="https://android-review.googlesource.com/#/q/I42e9b0c5593b2b0d226ec2246e909958179e342b">I42e9b</a>)</li> <li>Renaming <code translate="no" dir="ltr">ActivityOptionsCompat</code> to <code translate="no" dir="ltr">ActivityEmbeddingOptions</code> (<a href="https://android-review.googlesource.com/#/q/I893010468c45524f63b5256176473f3327cbf7c7">I89301</a>)</li> <li>Add <code translate="no" dir="ltr">splitSupportStatus</code> to indicate if Activity embedding is available. (<a href="https://android-review.googlesource.com/#/q/I100240855cb3213d42b38ee1dace73fc0e595843">I10024</a>)</li> <li>Introduce <code translate="no" dir="ltr">SplitAttributes.BackgroundColor</code> to better represent the <code translate="no" dir="ltr">DEFAULT</code> value. Clarify that non-opaque animation background color is not supported, so any non-opaque colors will be treated as the default, which means to use the current theme window background color. (<a href="https://android-review.googlesource.com/#/q/Ic6b95aad1f2f5a265f3467c00d125414a33e0137">Ic6b95</a>)</li> <li>Replace <code translate="no" dir="ltr">alwaysAllow()</code> and <code translate="no" dir="ltr">alwaysDisallow()</code> with <code translate="no" dir="ltr">ALWAYS_ALLOW</code> and <code translate="no" dir="ltr">ALWAYS_DISALLOW</code>. (<a href="https://android-review.googlesource.com/#/q/I3057bfd575704c75010470cc6b31733747ac9c39">I3057b</a>)</li> <li>Add APIs for <code translate="no" dir="ltr">SplitRule</code>, <code translate="no" dir="ltr">SplitAttributes</code>, <code translate="no" dir="ltr">SplitAttributesCalculator</code>. (<a href="https://android-review.googlesource.com/#/q/I92d234efb38620fcefc85adb4cc9ef79e0a515fc">I92d23</a>)</li> <li>Add <code translate="no" dir="ltr">TestActivityStack</code> to create <code translate="no" dir="ltr">ActivityStack</code> for testing <ul> <li>Add <code translate="no" dir="ltr">TestSplitInfo</code> to create <code translate="no" dir="ltr">SplitInfo</code> for testing. (<a href="https://android-review.googlesource.com/#/q/I8e7797d8a2ffc53adbaa8b150beb97404b939b41">I8e779</a>)</li> </ul></li> <li>Add a way to create fake <code translate="no" dir="ltr">SplitAttributesCalculatorParams</code> so that developers can verify their customized <code translate="no" dir="ltr">SplitAttributesCalculator</code> (<a href="https://android-review.googlesource.com/#/q/Id4a6e7294d2ae79db3a3cc7f5887e45cd726fa16">Id4a6e</a>)</li> <li>Add <code translate="no" dir="ltr">WindowMetricsCalculator#computeCurrentWindowMetrics(@UiContext context: Context)</code> and <code translate="no" dir="ltr">WindowMetricsCalculator#computeMaximumWindowMetrics(@UiContext context: Context)</code> (<a href="https://android-review.googlesource.com/#/q/I66c7f69171101da6c89babbb42ba9ed456117ab8">I66c7f</a>)</li> </ul> <h3 id="1.2.0-alpha02" data-text="Version 1.2.0-alpha02" tabindex="-1">Version 1.2.0-alpha02</h3> <p>June 7, 2023</p> <p><code translate="no" dir="ltr">androidx.window:window-*:1.2.0-alpha02</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/c5bf9bc40dd5d9f0b3f34e7273ac0d4e4f05c41d..73f902dee011bfe400d8a0330bfd8d4bb632065f/window">Version 1.2.0-alpha02 contains these commits.</a></p> <p><strong>New Features</strong></p> <ul> <li>Update test API to have a constant for unspecified folding features.</li> <li>Overriding with <code translate="no" dir="ltr">WindowLayoutInfoPublishRule</code> will override all values of <code translate="no" dir="ltr">windowLayoutInfo</code>, including the Context based API.</li> </ul> <p><strong>API Changes</strong></p> <ul> <li>Add constant for unspecified center folding feature. (<a href="https://android-review.googlesource.com/#/q/I7530cd0345d6daa59d0744153e7b820f26ca9dea">I7530c</a>)</li> </ul> <p><strong>Bug Fixes</strong></p> <ul> <li>Update <code translate="no" dir="ltr">WindowLayoutInfoPublishRule</code> to support overrides on <code translate="no" dir="ltr">Context</code> based <code translate="no" dir="ltr">WindowLayoutInfo</code>. (<a href="https://android-review.googlesource.com/#/q/I2037aeb49b5ec6193457bbc11cd04ff56c8b764d">I2037a</a>)</li> </ul> <h3 id="1.2.0-alpha01" data-text="Version 1.2.0-alpha01" tabindex="-1">Version 1.2.0-alpha01</h3> <p>May 24, 2023</p> <p><code translate="no" dir="ltr">androidx.window:window-*:1.2.0-alpha01</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/0c26f64947eb47c353adc923210c3d786bcf1931..c5bf9bc40dd5d9f0b3f34e7273ac0d4e4f05c41d/window">Version 1.2.0-alpha01 contains these commits.</a></p> <p><strong>New Features</strong></p> <p>Stabilize testing APIs around Activity Embedding and <code translate="no" dir="ltr">WindowLayoutInfoTracker</code>. <code translate="no" dir="ltr">ActivityEmbeddingRule</code> has been promoted to stable. <code translate="no" dir="ltr">WindowMetricsCalculatorRule</code> has been promoted to stable. Utility functions to create a <code translate="no" dir="ltr">FoldingFeature</code> for test have been promoted to stable.</p> <p><strong>API Changes</strong></p> <ul> <li>Stabilize <code translate="no" dir="ltr">ActivityEmbeddingRule</code> to support unit testing around Activity embedding. (<a href="https://android-review.googlesource.com/#/q/I8d6b66ee5d79792fb5ef737c0818dbff2f590354">I8d6b6</a>)</li> <li><code translate="no" dir="ltr">WindowMetrisCalculatorTestRule</code> is stable allowing stub metrics for JVM tests. We recommend using an emulator for accurate results.</li> <li>Stabilize test APIs for <code translate="no" dir="ltr">WindowLayoutInfo</code> to support JVM testing. (<a href="https://android-review.googlesource.com/#/q/Ie036e78bfd1784057c252a45917e2185687ae6b3">Ie036e</a>)</li> <li>Add <code translate="no" dir="ltr">IntRange</code> for test folding feature values. (<a href="https://android-review.googlesource.com/#/q/I69f7d7f298a08765c835862978b9a7a26bbb3e9f">I69f7d</a>)</li> </ul> <h2 id="version_11_2" data-text="Version 1.1" tabindex="-1">Version 1.1</h2> <h3 id="1.1.0" data-text="Version 1.1.0" tabindex="-1">Version 1.1.0</h3> <p>June 7, 2023</p> <p><code translate="no" dir="ltr">androidx.window:window-*:1.1.0</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/0c26f64947eb47c353adc923210c3d786bcf1931..0dfa2a434822994e57d9d6a84225c31e7b395591/window">Version 1.1.0 contains these commits.</a></p> <p><strong>Important changes since 1.0.0</strong></p> <p><strong>Activity Embedding</strong></p> <ul> <li>Added <code translate="no" dir="ltr">PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED</code> as a boolean property of the <code translate="no" dir="ltr">&lt;application&gt;</code> tag in the app manifest.</li> <li>Deprecated <code translate="no" dir="ltr">isSplitSupported</code> and replaced with <code translate="no" dir="ltr">splitSupportStatus</code> to provide more detailed information about why the split feature is not available.</li> <li>Added the <code translate="no" dir="ltr">SplitController.SplitSupportStatus</code> nested class to provide state constants for the <code translate="no" dir="ltr">splitSupportStatus</code> property.</li> <li>Refactored <code translate="no" dir="ltr">SplitController</code> to several modules: <ul> <li><code translate="no" dir="ltr">ActivityEmbeddingController</code> module for <code translate="no" dir="ltr">Activity</code> or <code translate="no" dir="ltr">ActivityStack</code> related APIs.</li> <li>Moved <code translate="no" dir="ltr">isActivityEmbedded</code> from <code translate="no" dir="ltr">SplitController</code> to <code translate="no" dir="ltr">ActivityEmbeddingController</code>.</li> <li><code translate="no" dir="ltr">RuleController</code> module for <code translate="no" dir="ltr">EmbeddingRule</code> related operations:</li> <li>Removed <code translate="no" dir="ltr">SplitController</code> APIs:</li> <li><code translate="no" dir="ltr">clearRegisteredRules()</code></li> <li><code translate="no" dir="ltr">getSplitRules()</code></li> <li><code translate="no" dir="ltr">initialize()</code></li> <li><code translate="no" dir="ltr">registerRule()</code></li> <li><code translate="no" dir="ltr">unregisterRule()</code></li> <li>Added <code translate="no" dir="ltr">RuleController</code> APIs:</li> <li><code translate="no" dir="ltr">addRule()</code> — Adds a rule or updates the rule that has the same tag.</li> <li><code translate="no" dir="ltr">removeRule()</code> — Removes a rule from the collection of registered rules.</li> <li><code translate="no" dir="ltr">setRules()</code> — Establishes a collection of rules.</li> <li><code translate="no" dir="ltr">clearRules()</code> — Removes all registered rules.</li> <li><code translate="no" dir="ltr">parseRules()</code> — Parses rules from XML rule definitions.</li> </ul></li> <li>All modules require a context to be initialized by <code translate="no" dir="ltr">#getInstance()</code> method, including: <ul> <li><code translate="no" dir="ltr">ActivityEmbeddingController#getInstance(Context)</code></li> <li><code translate="no" dir="ltr">SplitController#getInstance(Context)</code></li> <li><code translate="no" dir="ltr">RuleController#getInstance(Context)</code></li> </ul></li> <li>Added the <code translate="no" dir="ltr">EmbeddingAspectRatio</code> class to define enum-like behavior constants related to display aspect ratio.</li> <li>Added the <code translate="no" dir="ltr">SplitAttributes</code> class to define the split layout.</li> <li>Added <code translate="no" dir="ltr">SplitAttributes</code> calculator functions to <code translate="no" dir="ltr">SplitController</code> to customize split layouts: <ul> <li><code translate="no" dir="ltr">setSplitAttributesCalculator(Function)</code></li> <li><code translate="no" dir="ltr">clearSplitAttributesCalculator()</code></li> <li><code translate="no" dir="ltr">isSplitAttributesCalculatorSupported()</code> to check if the <code translate="no" dir="ltr">SplitAttributesCalculator</code> APIs are supported on the device</li> </ul></li> <li>Added <code translate="no" dir="ltr">EmbeddingRule#tag</code> field.</li> <li>API updates in <code translate="no" dir="ltr">SplitRule</code>: <ul> <li>Added <code translate="no" dir="ltr">defaultSplitAttributes</code> — Defines the default split layout of a split; replaces <code translate="no" dir="ltr">splitRatio</code> and <code translate="no" dir="ltr">layoutDirection</code>.</li> <li>Added translation of the XML properties <code translate="no" dir="ltr">splitRatio</code> and <code translate="no" dir="ltr">splitLayoutDirection</code> to <code translate="no" dir="ltr">defaultSplitAttributes</code>.</li> <li>Changed minimum dimension definitions to use density-independent pixels (dp) instead of pixels.</li> <li>Added <code translate="no" dir="ltr">minHeightDp</code> with default value 600dp.</li> <li>Changed <code translate="no" dir="ltr">minWidth</code> to <code translate="no" dir="ltr">minWidthDp</code> with default value 600dp.</li> <li>Changed <code translate="no" dir="ltr">minSmallestWidth</code> to <code translate="no" dir="ltr">minSmallestWidthDp</code> with default value 600dp.</li> <li>Added <code translate="no" dir="ltr">maxAspectRatioInHorizontal</code> with default value <code translate="no" dir="ltr">ALWAYS_ALLOW</code>.</li> <li>Added <code translate="no" dir="ltr">maxAspectRatioInPortrait</code> with default value 1.4.</li> <li>Defined <code translate="no" dir="ltr">FinishBehavior</code> nested class to replace finish behavior constants.</li> <li>Applied the property changes to the Builder nested class of <code translate="no" dir="ltr">SplitPairRule</code> and <code translate="no" dir="ltr">SplitPlaceholderRule</code>.</li> </ul></li> <li>Replaced <code translate="no" dir="ltr">SplitInfo#getSplitRatio()</code> with <code translate="no" dir="ltr">SplitInfo#getSplitAttributes()</code> to provide additional split-related information.</li> </ul> <p><strong>WindowLayout</strong></p> <ul> <li>Added experimental non-activity UI context support to <code translate="no" dir="ltr">WindowInfoTracker</code>.</li> <li>Added experimental non-activity UI context to <code translate="no" dir="ltr">WindowMetricsCalculator</code>.</li> </ul> <p><strong>Migration Steps</strong></p> <ul> <li>To enable activity embedding to display activities in splits, apps must add the <code translate="no" dir="ltr">PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED</code> property to the manifest <code translate="no" dir="ltr">&lt;application&gt;</code> tag: <code translate="no" dir="ltr">xml &lt;property android:name=&quot;android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED&quot; android:value=&quot;true&quot; /&gt;</code> This allows the system to optimize the split behaviors for an application ahead of time.</li> <li><code translate="no" dir="ltr">SplitInfo</code> ratio <ul> <li>Check if the current split is stacked: <code translate="no" dir="ltr">kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType</code></li> <li>Check the current ratio: <code translate="no" dir="ltr">kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }</code></li> </ul></li> <li>SplitController migrations: <ul> <li><code translate="no" dir="ltr">SplitController.getInstance()</code> changes to <code translate="no" dir="ltr">SplitController.getInstance(Context)</code>.</li> <li><code translate="no" dir="ltr">SplitController.initialize(Context, @ResId int)</code> changes to <code translate="no" dir="ltr">RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int))</code>.</li> <li><code translate="no" dir="ltr">SplitController.getInstance().isActivityEmbedded(Activity)</code> changes to <code translate="no" dir="ltr">ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity)</code>.</li> <li><code translate="no" dir="ltr">SplitController.getInstance().registerRule(rule)</code> changes to <code translate="no" dir="ltr">RuleController.getInstance(Context).addRule(rule)</code>.</li> <li><code translate="no" dir="ltr">SplitController.getInstance().unregisterRule(rule)</code> changes to <code translate="no" dir="ltr">RuleController.getInstance(Context).removeRule(rule)</code>.</li> <li><code translate="no" dir="ltr">SplitController.getInstance().clearRegisteredRules()</code> changes to <code translate="no" dir="ltr">RuleController.getInstance(Context).clearRules()</code>.</li> <li><code translate="no" dir="ltr">SplitController.getInstance().getSplitRules()</code> changes to <code translate="no" dir="ltr">RuleController.getInstance(Context).getRules()</code>.</li> </ul></li> <li><code translate="no" dir="ltr">SplitRule</code> property migrations: <ul> <li><code translate="no" dir="ltr">minWidth</code> and <code translate="no" dir="ltr">minSmallestWidth</code> now use dp units instead of pixels. Apps can use the following call: <code translate="no" dir="ltr">kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics )</code> or simply divide <code translate="no" dir="ltr">minWith</code> in pixels by <code translate="no" dir="ltr">displayMetrics#density</code>.</li> </ul></li> <li>Finish behavior constants must be migrated to <code translate="no" dir="ltr">FinishBehavior</code> enum-like class constants: <ul> <li><code translate="no" dir="ltr">FINISH_NEVER</code> changes to <code translate="no" dir="ltr">FinishBehavior.NEVER</code>.</li> <li><code translate="no" dir="ltr">FINISH_ALWAYS</code> changes to <code translate="no" dir="ltr">FinishBehavior.ALWAYS</code>.</li> <li><code translate="no" dir="ltr">FINISH_ADJACENT</code> changes to <code translate="no" dir="ltr">FinishBehavior.ADJACENT</code>.</li> </ul></li> <li>Layout direction must be migrated to <code translate="no" dir="ltr">SplitAttributes.LayoutDirection</code>: <ul> <li><code translate="no" dir="ltr">ltr</code> changes to <code translate="no" dir="ltr">SplitAttributes.LayoutDirection.LEFT_TO_RIGHT</code>.</li> <li><code translate="no" dir="ltr">rtl</code> changes to <code translate="no" dir="ltr">SplitAttributes.LayoutDirection.RIGHT_TO_LEFT</code>.</li> <li><code translate="no" dir="ltr">locale</code> changes to <code translate="no" dir="ltr">SplitAttributes.LayoutDirection.LOCALE</code>.</li> <li><code translate="no" dir="ltr">splitRatio</code> must be migrated to <code translate="no" dir="ltr">SplitAttributes.SplitType.ratio(splitRatio)</code>.</li> </ul></li> <li><code translate="no" dir="ltr">SplitPairRule.Builder</code> migrations: <ul> <li><code translate="no" dir="ltr">SplitPairRule.Builder(filters, minWidth, minSmallestWidth)</code> changes to <code translate="no" dir="ltr">kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.</code></li> <li><code translate="no" dir="ltr">setLayoutDirection(layoutDirection)</code> and <code translate="no" dir="ltr">setSplitRatio(ratio)</code> changes to <code translate="no" dir="ltr">kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )</code></li> <li><code translate="no" dir="ltr">setFinishPrimaryWithSecondary</code> and <code translate="no" dir="ltr">setFinishSecondaryWithPrimary</code> take the <code translate="no" dir="ltr">FinishBehavior</code> enum-like constants. See “SplitRule migrations” for details.</li> <li>Use <code translate="no" dir="ltr">setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)</code> to show splits on portrait devices.</li> </ul></li> <li><code translate="no" dir="ltr">SplitPlaceholder.Builder</code> migrations: <ul> <li>Has only <code translate="no" dir="ltr">filters</code> and <code translate="no" dir="ltr">placeholderIntent</code> parameters. Other properties move to setters. See “SplitPairRule.Builder migrations” for details.</li> <li><code translate="no" dir="ltr">setFinishPrimaryWithPlaceholder</code> takes the <code translate="no" dir="ltr">FinishBehavior</code> enum-like constants. See “SplitRule migrations” for details.</li> <li><code translate="no" dir="ltr">setLayoutDirection(layoutDirection)</code> and <code translate="no" dir="ltr">setSplitRatio(ratio)</code> change to: <code translate="no" dir="ltr">kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )</code></li> <li>Use <code translate="no" dir="ltr">setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)</code> to show splits on portrait devices.</li> </ul></li> </ul> <h3 id="1.1.0-rc01" data-text="Version 1.1.0-rc01" tabindex="-1">Version 1.1.0-rc01</h3> <p>May 10, 2023</p> <p><code translate="no" dir="ltr">androidx.window:window-*:1.1.0-rc01</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/a200cb82769634cecdb118ec4f0bfdf0b086e597..0c26f64947eb47c353adc923210c3d786bcf1931/window">Version 1.1.0-rc01 contains these commits.</a></p> <aside class="note"><strong>Note:</strong><span> Please refer to <a href="https://android-developers.googleblog.com/2023/04/whats-new-in-windowmanager-110-beta01.html">What’s new in WindowManager 1.1.0-beta01</a>.</span></aside> <p><strong>New Features</strong></p> <ul> <li>Release <code translate="no" dir="ltr">ActivityEmbedding</code> as a stable API.</li> <li>Various bug fixes.</li> </ul> <h3 id="1.1.0-beta02" data-text="Version 1.1.0-beta02" tabindex="-1">Version 1.1.0-beta02</h3> <p>April 5, 2023</p> <p><code translate="no" dir="ltr">androidx.window:window-*:1.1.0-beta02</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/5e7d256f82fbafb6d059ab7b18fddd87c7531553..a200cb82769634cecdb118ec4f0bfdf0b086e597/window">Version 1.1.0-beta02 contains these commits.</a></p> <p><strong>New Features</strong></p> <ul> <li>Internal fixes and clean up.</li> </ul> <h3 id="1.1.0-beta01" data-text="Version 1.1.0-beta01" tabindex="-1">Version 1.1.0-beta01</h3> <p>March 22, 2023</p> <p><code translate="no" dir="ltr">androidx.window:window-*:1.1.0-beta01</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/87533b4ff06971ed59028936cd9b6da988cd4522..5e7d256f82fbafb6d059ab7b18fddd87c7531553/window">Version 1.1.0-beta01 contains these commits.</a></p> <p><strong>Activity Embedding</strong></p> <ul> <li>Added <code translate="no" dir="ltr">PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED</code> as a boolean property of the <code translate="no" dir="ltr">&lt;application&gt;</code> tag in the app manifest.</li> <li>Deprecated <code translate="no" dir="ltr">isSplitSupported</code> and replaced with <code translate="no" dir="ltr">splitSupportStatus</code> to provide more detailed information about why the split feature is not available.</li> <li>Added the <code translate="no" dir="ltr">SplitController.SplitSupportStatus</code> nested class to provide state constants for the <code translate="no" dir="ltr">splitSupportStatus</code> property.</li> <li>Refactored <code translate="no" dir="ltr">SplitController</code> to several modules: <ul> <li><code translate="no" dir="ltr">ActivityEmbeddingController</code> module for <code translate="no" dir="ltr">Activity</code> or <code translate="no" dir="ltr">ActivityStack</code> related APIs.</li> <li>Moved <code translate="no" dir="ltr">isActivityEmbedded</code> from <code translate="no" dir="ltr">SplitController</code> to <code translate="no" dir="ltr">ActivityEmbeddingController</code>.</li> <li><code translate="no" dir="ltr">RuleController</code> module for <code translate="no" dir="ltr">EmbeddingRule</code> related operations:</li> <li>Removed <code translate="no" dir="ltr">SplitController</code> APIs: <ul> <li><code translate="no" dir="ltr">clearRegisteredRules()</code></li> <li><code translate="no" dir="ltr">getSplitRules()</code></li> <li><code translate="no" dir="ltr">initialize()</code></li> <li><code translate="no" dir="ltr">registerRule()</code></li> <li><code translate="no" dir="ltr">unregisterRule()</code></li> </ul></li> <li>Added <code translate="no" dir="ltr">RuleController</code> APIs: <ul> <li><code translate="no" dir="ltr">addRule()</code> — Adds a rule or updates the rule that has the same tag.</li> <li><code translate="no" dir="ltr">removeRule()</code> — Removes a rule from the collection of registered rules.</li> <li><code translate="no" dir="ltr">setRules()</code> — Establishes a collection of rules.</li> <li><code translate="no" dir="ltr">clearRules()</code> — Removes all registered rules.</li> <li>`parseRules() — Parses rules from XML rule definitions.</li> </ul></li> </ul></li> <li>All modules require a context to be initialized by <code translate="no" dir="ltr">#getInstance()</code> method, including: <ul> <li><code translate="no" dir="ltr">ActivityEmbeddingController#getInstance(Context)</code></li> <li><code translate="no" dir="ltr">SplitController#getInstance(Context)</code></li> <li><code translate="no" dir="ltr">RuleController#getInstance(Context)</code></li> </ul></li> <li>Added the <code translate="no" dir="ltr">EmbeddingAspectRatio</code> class to define enum-like behavior constants related to display aspect ratio.</li> <li>Added the <code translate="no" dir="ltr">SplitAttributes</code> class to define the split layout.</li> <li>Added <code translate="no" dir="ltr">SplitAttributes</code> calculator functions to <code translate="no" dir="ltr">SplitController</code> to customize split layouts: <ul> <li><code translate="no" dir="ltr">setSplitAttributesCalculator(Function)</code></li> <li><code translate="no" dir="ltr">clearSplitAttributesCalculator()</code></li> <li><code translate="no" dir="ltr">isSplitAttributesCalculatorSupported()</code> to check if the SplitAttributesCalculator APIs are supported on the device</li> </ul></li> <li>Added <code translate="no" dir="ltr">EmbeddingRule#tag</code> field.</li> <li>API updates in <code translate="no" dir="ltr">SplitRule</code>: <ul> <li>Added <code translate="no" dir="ltr">defaultSplitAttributes</code> — Defines the default split layout of a split; replaces <code translate="no" dir="ltr">splitRatio</code> and <code translate="no" dir="ltr">layoutDirection</code>.</li> <li>Added translation of the XML properties <code translate="no" dir="ltr">splitRatio</code> and <code translate="no" dir="ltr">splitLayoutDirection</code> to <code translate="no" dir="ltr">defaultSplitAttributes</code>.</li> <li>Changed minimum dimension definitions to use density-independent pixels (dp) instead of pixels.</li> <li>Added <code translate="no" dir="ltr">minHeightDp</code> with default value 600dp.</li> <li>Changed <code translate="no" dir="ltr">minWidth</code> to <code translate="no" dir="ltr">minWidthDp</code> with default value 600dp.</li> <li>Changed <code translate="no" dir="ltr">minSmallestWidth</code> to <code translate="no" dir="ltr">minSmallestWidthDp</code> with default value 600dp.</li> <li>Added <code translate="no" dir="ltr">maxAspectRatioInHorizontal</code> with default value <code translate="no" dir="ltr">ALWAYS_ALLOW</code>.</li> <li>Added <code translate="no" dir="ltr">maxAspectRatioInPortrait</code> with default value <code translate="no" dir="ltr">1.4</code>.</li> <li>Defined <code translate="no" dir="ltr">FinishBehavior</code> nested class to replace finish behavior constants.</li> <li>Applied the property changes to the <code translate="no" dir="ltr">Builder</code> nested class of <code translate="no" dir="ltr">SplitPairRule</code> and <code translate="no" dir="ltr">SplitPlaceholderRule</code>.</li> </ul></li> <li>Replaced <code translate="no" dir="ltr">SplitInfo#getSplitRatio()</code> with <code translate="no" dir="ltr">SplitInfo#getSplitAttributes()</code> to provide additional split-related information.</li> </ul> <p><strong>WindowLayout</strong></p> <ul> <li>Added non-activity UI context support to <code translate="no" dir="ltr">WindowInfoTracker</code>.</li> <li>Added non-activity UI context to <code translate="no" dir="ltr">WindowMetricsCalculator</code>.</li> </ul> <p><strong>Migration Steps</strong></p> <ul> <li>To enable activity embedding to display activities in splits, apps must add the <code translate="no" dir="ltr">PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED</code> property to the manifest <code translate="no" dir="ltr">&lt;application&gt;</code> tag: <code translate="no" dir="ltr">xml &lt;property android:name=&quot;android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED&quot; android:value=&quot;true&quot; /&gt;</code> This allows the system to optimize the split behaviors for an application ahead of time.</li> <li><code translate="no" dir="ltr">SplitInfo</code> ratio <ul> <li>Check if the current split is stacked: <code translate="no" dir="ltr">kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType</code></li> <li>Check the current ratio: <code translate="no" dir="ltr">kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }</code></li> </ul></li> <li><code translate="no" dir="ltr">SplitController</code> migrations: <ul> <li><code translate="no" dir="ltr">SplitController.getInstance()</code> changes to <code translate="no" dir="ltr">SplitController.getInstance(Context)</code>.</li> <li><code translate="no" dir="ltr">SplitController.initialize(Context, @ResId int)</code> changes to <code translate="no" dir="ltr">RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int))</code>.</li> <li><code translate="no" dir="ltr">SplitController.getInstance().isActivityEmbedded(Activity)</code> changes to <code translate="no" dir="ltr">ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity)</code>.</li> <li><code translate="no" dir="ltr">SplitController.getInstance().registerRule(rule)</code> changes to <code translate="no" dir="ltr">RuleController.getInstance(Context).addRule(rule)</code>.</li> <li><code translate="no" dir="ltr">SplitController.getInstance().unregisterRule(rule)</code> changes to <code translate="no" dir="ltr">RuleController.getInstance(Context).removeRule(rule)</code>.</li> <li><code translate="no" dir="ltr">SplitController.getInstance().clearRegisteredRules()</code> changes to <code translate="no" dir="ltr">RuleController.getInstance(Context).clearRules()</code>.</li> <li><code translate="no" dir="ltr">SplitController.getInstance().getSplitRules()</code> changes to <code translate="no" dir="ltr">RuleController.getInstance(Context).getRules()</code>.</li> </ul></li> <li><code translate="no" dir="ltr">SplitRule</code> property migrations: <ul> <li><code translate="no" dir="ltr">minWidth</code> and <code translate="no" dir="ltr">minSmallestWidth</code> now use dp units instead of pixels. Apps can use the following call: <code translate="no" dir="ltr">kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics )</code> or simply divide <code translate="no" dir="ltr">minWith</code> in pixels by <code translate="no" dir="ltr">displayMetrics#density</code>.</li> </ul></li> <li>Finish behavior constants must be migrated to <code translate="no" dir="ltr">FinishBehavior</code> enum-like class constants: <ul> <li><code translate="no" dir="ltr">FINISH_NEVER</code> changes to <code translate="no" dir="ltr">FinishBehavior.NEVER</code>.</li> <li><code translate="no" dir="ltr">FINISH_ALWAYS</code> changes to <code translate="no" dir="ltr">FinishBehavior.ALWAYS</code>.</li> <li><code translate="no" dir="ltr">FINISH_ADJACENT</code> changes to <code translate="no" dir="ltr">FinishBehavior.ADJACENT</code>.</li> </ul></li> <li>Layout direction must be migrated to <code translate="no" dir="ltr">SplitAttributes.LayoutDirection</code>: <ul> <li><code translate="no" dir="ltr">ltr</code> changes to <code translate="no" dir="ltr">SplitAttributes.LayoutDirection.LEFT_TO_RIGHT</code>.</li> <li><code translate="no" dir="ltr">rtl</code> changes to <code translate="no" dir="ltr">SplitAttributes.LayoutDirection.RIGHT_TO_LEFT</code>.</li> <li><code translate="no" dir="ltr">locale</code> changes to <code translate="no" dir="ltr">SplitAttributes.LayoutDirection.LOCALE</code>.</li> <li><code translate="no" dir="ltr">splitRatio</code> must be migrated to <code translate="no" dir="ltr">SplitAttributes.SplitType.ratio(splitRatio)</code>.</li> </ul></li> <li><code translate="no" dir="ltr">SplitPairRule.Builder</code> migrations: <ul> <li><code translate="no" dir="ltr">SplitPairRule.Builder(filters, minWidth, minSmallestWidth)</code> changes to <code translate="no" dir="ltr">kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.</code></li> <li><code translate="no" dir="ltr">setLayoutDirection(layoutDirection)</code> and <code translate="no" dir="ltr">setSplitRatio(ratio)</code> change to <code translate="no" dir="ltr">kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )</code></li> <li><code translate="no" dir="ltr">setFinishPrimaryWithSecondary</code> and <code translate="no" dir="ltr">setFinishSecondaryWithPrimary</code> take the <code translate="no" dir="ltr">FinishBehavior</code> enum-like constants. See “SplitRule migrations” for details.</li> <li>Use <code translate="no" dir="ltr">setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)</code> to show splits on portrait devices.</li> </ul></li> <li><code translate="no" dir="ltr">SplitPlaceholder.Builder</code> migrations: <ul> <li>Has only <code translate="no" dir="ltr">filters</code> and <code translate="no" dir="ltr">placeholderIntent</code> parameters. Other properties move to setters. See “SplitPairRule.Builder migrations” for details.</li> <li><code translate="no" dir="ltr">setFinishPrimaryWithPlaceholder</code> takes the <code translate="no" dir="ltr">FinishBehavior</code> enum-like constants. See “SplitRule migrations” for details.</li> <li><code translate="no" dir="ltr">setLayoutDirection(layoutDirection)</code> and <code translate="no" dir="ltr">setSplitRatio(ratio)</code> change to: <code translate="no" dir="ltr">kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )</code></li> <li>Use <code translate="no" dir="ltr">setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)</code> to show splits on portrait devices.</li> </ul></li> </ul> <h3 id="1.1.0-alpha06" data-text="Version 1.1.0-alpha06" tabindex="-1">Version 1.1.0-alpha06</h3> <p>February 22, 2023</p> <p><code translate="no" dir="ltr">androidx.window:window-*:1.1.0-alpha06</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/a1e318590b217ecfce1b2de17eed2f18b6a680bb..87533b4ff06971ed59028936cd9b6da988cd4522/window">Version 1.1.0-alpha06 contains these commits.</a></p> <p><strong>New Features</strong></p> <ul> <li>Expose experimental version of getting the <code translate="no" dir="ltr">WindowLayoutInfo</code> from a UI context.</li> </ul> <p><strong>API Changes</strong></p> <ul> <li>Add <code translate="no" dir="ltr">splitSupportStatus</code> to indicate if Activity embedding is available. (<a href="https://android-review.googlesource.com/#/q/I100240855cb3213d42b38ee1dace73fc0e595843">I10024</a>)</li> <li>Make UI Context <code translate="no" dir="ltr">WindowLayoutInfo</code> API as experimental. (<a href="https://android-review.googlesource.com/#/q/I58ee049cac8cc74c61f222cc44375f266bbca027">I58ee0</a>)</li> <li>Introduces the <code translate="no" dir="ltr">WindowAreaController</code> and API&#39;s to enable <code translate="no" dir="ltr">RearDisplay</code> Mode to move the current window to the display that is aligned with the rear camera. (<a href="https://android-review.googlesource.com/#/q/Iffcbf39a129e84d825f2b3796e377ef54987b7c2">Iffcbf</a>)</li> <li>Update default background color. (<a href="https://android-review.googlesource.com/#/q/I1ac1b4e54e06a9ccb31781c9d3a7d35f811d0687">I1ac1b</a>)</li> <li>Add <code translate="no" dir="ltr">SplitAttributes</code> params. (<a href="https://android-review.googlesource.com/#/q/I18bdd66483bafb868ea33ed3f5e7eea79bdfcdb7">I18bdd</a>)</li> <li>Add APIs for <code translate="no" dir="ltr">SplitRule</code>, <code translate="no" dir="ltr">SplitAttributes</code>, <code translate="no" dir="ltr">SplitAttributesCalculator</code>. (<a href="https://android-review.googlesource.com/#/q/I92d234efb38620fcefc85adb4cc9ef79e0a515fc">I92d23</a>)</li> <li>Improve the APIs around <code translate="no" dir="ltr">maxAspectRatio</code>: <ol> <li>Replace <code translate="no" dir="ltr">alwaysAllow()</code> and <code translate="no" dir="ltr">alwaysDisallow()</code> with <code translate="no" dir="ltr">ALWAYS_ALLOW</code> and <code translate="no" dir="ltr">ALWAYS_DISALLOW</code>.</li> <li>Update API documentation of @see with standalone documentation. (<a href="https://android-review.googlesource.com/#/q/I3057bfd575704c75010470cc6b31733747ac9c39">I3057b</a>)</li> </ol></li> <li>The following constructors are removed from public APIs because they are not supposed to be called by apps. <ul> <li><code translate="no" dir="ltr">SplitInfo</code> constructor</li> <li><code translate="no" dir="ltr">ActivityStack</code> constructor (<a href="https://android-review.googlesource.com/#/q/Ide5342d450a1cedb51d7c6593e3e5e2f5cfc2537">Ide534</a>)</li> </ul></li> <li><code translate="no" dir="ltr">SplitRule</code> now takes <code translate="no" dir="ltr">maxAspectRatioInPortrait/Landscape</code>. It only allows activities split when the aspect ratio of the parent bounds is smaller or equal to the requested <code translate="no" dir="ltr">maxAspectRatio</code>. (<a href="https://android-review.googlesource.com/#/q/Ia5990b64c87987a9328c228753e792bd293e139a">Ia5990</a>)</li> <li>Change <code translate="no" dir="ltr">RuleController#parseRules</code> to be static (<a href="https://android-review.googlesource.com/#/q/I785df661ce66a6fdb21842ad2569b2051995c2a0">I785df</a>)</li> <li>Improve the APIs around ActivityEmbedding <ol> <li>Align the API naming - Use add/remove for multiple instances:</li> <li><code translate="no" dir="ltr">registerRule</code> changes to <code translate="no" dir="ltr">addRule</code></li> <li><code translate="no" dir="ltr">unregisterRule</code> changes to <code translate="no" dir="ltr">removeRule</code></li> <li>Replace <code translate="no" dir="ltr">getSplitRules</code> with <code translate="no" dir="ltr">getRules</code> since <code translate="no" dir="ltr">ActivityRule</code> is not a split rule</li> <li>Add <code translate="no" dir="ltr">RuleController#setRules</code> to set a bunch of rules</li> <li>Extract rule related APIs from <code translate="no" dir="ltr">SplitController</code> to singleton <code translate="no" dir="ltr">RuleController</code>. They are:</li> <li><code translate="no" dir="ltr">addRule</code></li> <li><code translate="no" dir="ltr">removeRule</code></li> <li><code translate="no" dir="ltr">getRules</code></li> <li><code translate="no" dir="ltr">setRules</code></li> <li><code translate="no" dir="ltr">clearRules</code></li> <li><code translate="no" dir="ltr">parseRules</code></li> <li>Extract <code translate="no" dir="ltr">#isActivityEmbedded</code> from <code translate="no" dir="ltr">SplitController</code> to singleton <code translate="no" dir="ltr">ActivityEmbeddingController</code>. They are:</li> <li><code translate="no" dir="ltr">isActivityEmbedded</code></li> <li>Remove <code translate="no" dir="ltr">SplitController#initialize</code>. To set rules from XML file, please use <code translate="no" dir="ltr">RuleController#parseRules</code> and <code translate="no" dir="ltr">#setRules</code>. Before this change: <code translate="no" dir="ltr">SplitController.initialize(context, R.xml.static_rules)</code> After this change: <code translate="no" dir="ltr">val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules)</code></li> <li>We don&#39;t distinguish static rules with runtime rules anymore. That said, calling <code translate="no" dir="ltr">#clearRules</code> results to clear all rules no matter they are registered with static XML rule definitions or at runtime. To hav the legacy behavior of <code translate="no" dir="ltr">SplitController#clearRegisteredRules</code>, please call <code translate="no" dir="ltr">RuleController#parseRules</code> with the XML resources id and call <code translate="no" dir="ltr">RuleController#setRules</code> to set back the rules again. Before this change: <code translate="no" dir="ltr">SplitController.getInstance(context).clearRegisteredRules()</code> After this change: <code translate="no" dir="ltr">val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules)</code> (<a href="https://android-review.googlesource.com/#/q/Ib39671fb22a9ccef3b0aa8967ee18c3168c54c63">Ib3967</a>)</li> </ol></li> <li>Improve the SplitRule APIs: <ol> <li>Take min dimensions in DP instead of pixels for <code translate="no" dir="ltr">SplitRule</code>.</li> <li>Refactor for <code translate="no" dir="ltr">SplitRule</code> Builder to take min dimensions as optional. (<a href="https://android-review.googlesource.com/#/q/I95f17ce89844d18708e6fb03924d38a00af115ac">I95f17</a>)</li> </ol></li> <li>Pass a Context to initialize <code translate="no" dir="ltr">SplitController</code> (<a href="https://android-review.googlesource.com/#/q/I42549aeb1b5df27093dc6c7de73a2c4d7c97e75f">I42549</a>)</li> <li>Renamed <code translate="no" dir="ltr">SplitRule#layoutDir</code> to <code translate="no" dir="ltr">#layoutDirection</code> and <code translate="no" dir="ltr">SplitRule Builder#setLayoutDir</code> to <code translate="no" dir="ltr">Builder#setLayoutDirection</code>. (<a href="https://android-review.googlesource.com/#/q/I3f6d1bea1d82e104c31c5458fe1f715927061cd8">I3f6d1</a>)</li> </ul> <h3 id="1.1.0-alpha04" data-text="Version 1.1.0-alpha04" tabindex="-1">Version 1.1.0-alpha04</h3> <p>November 9, 2022</p> <p><code translate="no" dir="ltr">androidx.window:window-*:1.1.0-alpha04</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/a7f0710ad21f556f0dde9bf7bdab6d2135170fd4..a1e318590b217ecfce1b2de17eed2f18b6a680bb/window">Version 1.1.0-alpha04 contains these commits.</a></p> <p><strong>New Features</strong></p> <ul> <li>Expose a method to determine if an <code translate="no" dir="ltr">ActivityStack</code> is empty for <code translate="no" dir="ltr">ActivityEmbedding</code>.</li> <li>Removed experimental API tags from <code translate="no" dir="ltr">ActivityEmbedding</code> APIs.</li> <li>Hide <code translate="no" dir="ltr">ActivityRule</code> constructor as the <code translate="no" dir="ltr">Builder</code> is the preferred way to construct.</li> <li>Add an experimental method to get the <code translate="no" dir="ltr">WindowInsets</code> on <code translate="no" dir="ltr">WindowMetrics</code>.</li> <li>Update <code translate="no" dir="ltr">SplitPlaceholderFinishBehavior</code> to prevent finishing the placeholder. Finishing the placeholder caused some confusing behavior.</li> </ul> <p><strong>API Changes</strong></p> <ul> <li>Make val <code translate="no" dir="ltr">isEmpty</code> public to replace fun <code translate="no" dir="ltr">isEmpty</code>.</li> <li>Rename <code translate="no" dir="ltr">ActivityStack</code> parameter activities to <code translate="no" dir="ltr">activitiesInProcess</code>. (<a href="https://android-review.googlesource.com/#/q/Ia505530dbc6c86baf049060791202461bc1a191c">Ia5055</a>)</li> <li>Remove <code translate="no" dir="ltr">ActivityFilter#matchesClassName</code> and <code translate="no" dir="ltr">ActivityFilter#matchesClassNameOrWildCard</code> because they are confusing.</li> <li>Add <code translate="no" dir="ltr">ActivityFilter#componentName</code> abd <code translate="no" dir="ltr">ActivityFilter#intentAction</code> to allow the caller to distinguish different filters (<a href="https://android-review.googlesource.com/#/q/I41f220f8ecfb3deebfc515061c1eced568aaf30f">I41f22</a>)</li> <li>Remove the <code translate="no" dir="ltr">@Deprecated</code> APIs from the experimental API (<a href="https://android-review.googlesource.com/#/q/I216b3d3c43ded16fc84510cf2666d485cf75e7aa">I216b3</a>)</li> <li>Remove <code translate="no" dir="ltr">@ExperimentalWindowApi</code> for Activity Embedding APIs (<a href="https://android-review.googlesource.com/#/q/I69ebe86d328e1314826eba87ad57d2f640900994">I69ebe</a>)</li> <li>Hide <code translate="no" dir="ltr">ActivityRule</code> constructor, use Builder instead. (<a href="https://android-review.googlesource.com/#/q/If4eb6a461f82ab1176b336e28b0338d12fabce77">If4eb6</a>)</li> <li>Add APIs to check if an Activity is part of the <code translate="no" dir="ltr">ActivityFilter</code>. (<a href="https://android-review.googlesource.com/#/q/Ia43cfc0fe4d7108a4a2d84d204bba51913309c8f">Ia43cf</a>)</li> <li>Update API files to reflect changes in <code translate="no" dir="ltr">WindowMetrics</code> and <code translate="no" dir="ltr">WindowMetricsCalculatorCompat</code> classes (<a href="https://android-review.googlesource.com/#/q/I667fe7908615b044eb3d6423e124b6d697a9a100">I667fe</a>)</li> <li>Update <code translate="no" dir="ltr">ActivityEmbedding</code> Property Javadoc and class name (<a href="https://android-review.googlesource.com/#/q/Ia1386fcbdffb219199486316f23a92a156a86ee6">Ia1386</a>)</li> <li>Adding <code translate="no" dir="ltr">ActivityEmbedding</code> property tag names to be used in AndroidManifest.xml (<a href="https://android-review.googlesource.com/#/q/Id1ad453a295639a8cf53542d28c3991ecd4cc3da">Id1ad4</a>)</li> <li>Added new API <code translate="no" dir="ltr">SplitPlaceholderFinishBehavior</code> and <code translate="no" dir="ltr">SplitPlaceholderRule.finishPrimaryWithPlaceholder</code>, this replaces existing <code translate="no" dir="ltr">SplitPlaceholderRule.finishPrimaryWithSecondary</code> which defines when placeholder activites are finished, how associated activites in Activity Embedding should behave. (<a href="https://android-review.googlesource.com/#/q/I64647ee85533e8bebeefdef55b6252e919768fa7">I64647</a>)</li> </ul> <p><strong>Bug Fixes</strong></p> <ul> <li>Introduces the <code translate="no" dir="ltr">WindowAreaController</code> and API&#39;s to enable <code translate="no" dir="ltr">RearDisplay</code> Mode to move the current window to the display that is aligned with the rear camera. (<a href="https://android-review.googlesource.com/#/q/I388ab775740713650e6142135fbfc57891d2214b">I388ab</a>)</li> </ul> <h3 id="1.1.0-alpha03" data-text="Version 1.1.0-alpha03" tabindex="-1">Version 1.1.0-alpha03</h3> <p>July 27, 2022</p> <p><code translate="no" dir="ltr">androidx.window:window-*:1.1.0-alpha03</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/53d512be6fd26bc30bffa7cae8e9769ec5c4bfbf..a7f0710ad21f556f0dde9bf7bdab6d2135170fd4/window">Version 1.1.0-alpha03 contains these commits.</a></p> <p><strong>New Features</strong></p> <ul> <li>Update the default values for embedding rules.</li> </ul> <p><strong>API Changes</strong></p> <ul> <li>Update default values for embedding rule properties. (<a href="https://android-review.googlesource.com/#/q/Ic4d357169a86583665ff27bb7f239159267ec42c">Ic4d35</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>May 11, 2022</p> <p><code translate="no" dir="ltr">androidx.window:window-*:1.1.0-alpha02</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/53d512be6fd26bc30bffa7cae8e9769ec5c4bfbf/window">Version 1.1.0-alpha02 contains these commits.</a></p> <p><strong>New Features</strong></p> <ul> <li>Release the adapter libraries to support Java and RxJava.</li> </ul> <h3 id="1.1.0-alpha01" data-text="Version 1.1.0-alpha01" tabindex="-1">Version 1.1.0-alpha01</h3> <p>May 11, 2022</p> <p><code translate="no" dir="ltr">androidx.window:window-*:1.1.0-alpha01</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/64cc4d2fc346bde9fe41f047a665695fed2b5baf..c0a89ec374961b3015097ab307ebb8196dbe3888/window">Version 1.1.0-alpha01 contains these commits.</a></p> <p><strong>New Features</strong></p> <ul> <li>Release adapters to support java and RxJava</li> </ul> <h3 id="1.1.0-alpha01" data-text="Version 1.1.0-alpha01" tabindex="-1">Version 1.1.0-alpha01</h3> <p>April 20, 2022</p> <p><code translate="no" dir="ltr">androidx.window:window:1.1.0-alpha01</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/64cc4d2fc346bde9fe41f047a665695fed2b5baf..c0a89ec374961b3015097ab307ebb8196dbe3888/window/window">Version 1.1.0-alpha01 contains these commits.</a></p> <p><strong>New Features</strong></p> <ul> <li>Fixes a bug where backgrounding an app stops emitting fold features.</li> <li>Expand on the experimental ActivityEmbedding API.</li> </ul> <p><strong>API Changes</strong></p> <ul> <li>A public API to check if an activity is being embedded. (<a href="https://android-review.googlesource.com/#/q/I39eb7a9e5c5c0be78e0acdfe71eed3c17bd483a0">I39eb7</a>)</li> </ul> <p><strong>Bug Fixes</strong></p> <ul> <li>Add APIs that customize finishing behavior for containers in activity splits (<a href="https://android-review.googlesource.com/#/q/I1a1e4824a983555539c1ccacf4c6c73fad5d1841">I1a1e4</a>)</li> <li>Added a new configuration option for activity split rules. (<a href="https://android-review.googlesource.com/#/q/Iec6af1c9c7c7209f9d38d30aaa32e1961cd78ddd">Iec6af</a>)</li> </ul> <h2 id="version_10_2" data-text="Version 1.0" tabindex="-1">Version 1.0</h2> <h3 id="1.0.0" data-text="Version 1.0.0" tabindex="-1">Version 1.0.0</h3> <p>January 26, 2022</p> <p><code translate="no" dir="ltr">androidx.window:window-*:1.0.0</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/1106d327dbc4c8703e732bb015303a3cd1c36ee7..64cc4d2fc346bde9fe41f047a665695fed2b5baf/window">Version 1.0.0 contains these commits.</a></p> <p><strong>Major features of 1.0.0</strong></p> <ul> <li>Support for folding phones through <code translate="no" dir="ltr">WindowInfoTracker</code> and <code translate="no" dir="ltr">FoldingFeature</code>. <code translate="no" dir="ltr">WindowMetricsCalculator</code> to help calculate the current WindowMetrics.</li> </ul> <h3 id="1.0.0-rc01" data-text="Version 1.0.0-rc01" tabindex="-1">Version 1.0.0-rc01</h3> <p>December 15, 2021</p> <p><code translate="no" dir="ltr">androidx.window:window-*:1.0.0-rc01</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/cc1240d00b28657ee0c1a937f60430eaf1b03b09..1106d327dbc4c8703e732bb015303a3cd1c36ee7/window">Version 1.0.0-rc01 contains these commits.</a></p> <p><strong>New Features</strong></p> <ul> <li>Add support for folding phones through <code translate="no" dir="ltr">WindowInfoTracker</code>.</li> <li>Add methods to calculate the current and maximum <code translate="no" dir="ltr">WindowMetrics</code>.</li> <li>Add supporting test APIs.</li> </ul> <h3 id="1.0.0-beta04" data-text="Version 1.0.0-beta04" tabindex="-1">Version 1.0.0-beta04</h3> <p>November 17, 2021</p> <p><code translate="no" dir="ltr">androidx.window:window-*:1.0.0-beta04</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/41fb7767c8521ac3a81010ce2a48df33b54c9d02..cc1240d00b28657ee0c1a937f60430eaf1b03b09/window">Version 1.0.0-beta04 contains these commits.</a></p> <p><strong>New Features</strong></p> <ul> <li>Rename WindowInfoRepository to WindowInfoTracker.</li> <li>Make Activity an explicit method dependency for WindowInfoTracker.</li> <li>Add a simple TestRule for WindowMetricsCalculator to support developers using Robolectric.</li> </ul> <p><strong>API Changes</strong></p> <ul> <li>Extract extensions (<a href="https://android-review.googlesource.com/#/q/I25a5fda9e895d05c05bff1e11f3db6fed4bfa989">I25a5f</a>)</li> <li>add isEmpty in ActivityStack (<a href="https://android-review.googlesource.com/#/q/I5a4e6533fc30d0cf1298ee5d08fffd4d34ca1792">I5a4e6</a>)</li> <li>Rename WindowInfoRepository to WindowInfoTracker. <ul> <li>Update java/rxjava/testing dependencies to match. (<a href="https://android-review.googlesource.com/#/q/I0da639d9722c5a0c1a588a93535c2b256958c268">I0da63</a>)</li> </ul></li> <li>Add a test rule for a simple WindowMetricsCalculator. (<a href="https://android-review.googlesource.com/#/q/Ibacdb52705d86c127cd1021a36069602440a5aaa">Ibacdb</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>October 27, 2021</p> <p><code translate="no" dir="ltr">androidx.window:window-*:1.0.0-beta03</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/47e81d1c497b8a57534a460c277855db1b0257ae..41fb7767c8521ac3a81010ce2a48df33b54c9d02/window">Version 1.0.0-beta03 contains these commits.</a></p> <p><strong>New Features</strong></p> <ul> <li>Add experimental Activity Embedding APIs. This initial layout version allows showing two Activities side by side.</li> </ul> <p><strong>API Changes</strong></p> <ul> <li>Removed the currentWindowMetrics API since we can not provide it accurately. Please use WindowMetricsCalculator instead (<a href="https://android-review.googlesource.com/#/q/Icda5f3802692e70d0220a491c90999866a1b73cb">Icda5f</a>)</li> <li>Updated the extensions api. (<a href="https://android-review.googlesource.com/#/q/Ica92bbdb8300f51b2d2906f38b40a9ed027b7810">Ica92b</a>)</li> <li>Added an interface for a new feature that allows embedding activities and showing them side-by-side within the parent task window. (<a href="https://android-review.googlesource.com/#/q/I5711d3dfcfd27212fd8c0f83e4b3277863460c0">I5711d</a>)</li> <li>Hid the constructors for WindowMetrics and WindowLayoutInfo, please use the test APIs instead. (<a href="https://android-review.googlesource.com/#/q/I5a1b5b9197c7c26274f6f48a2a3e3b8f525f338f">I5a1b5</a>)</li> <li>Add an API to create fake WindowLayoutInfo objects. (<a href="https://android-review.googlesource.com/#/q/I4a2fd3a8da2e40fbabcb72c4f323f0090a573bd4">I4a2fd</a>)</li> </ul> <p><strong>Bug Fixes</strong></p> <ul> <li>Fixed memory leak. (<a href="https://android-review.googlesource.com/#/q/I3fc799fa458528a5cb18dac373aa024f99fa5a6a">I3fc79</a>, <a href="https://issuetracker.google.com/issues/202989046">b/202989046</a>)</li> </ul> <h3 id="1.0.0-beta02" data-text="Version 1.0.0-beta02" tabindex="-1">Version 1.0.0-beta02</h3> <p>September 1, 2021</p> <p><code translate="no" dir="ltr">androidx.window:window-*:1.0.0-beta02</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/f659ade9a1989a7e7f26d1e7f66b19d832ce1cb5..47e81d1c497b8a57534a460c277855db1b0257ae/window">Version 1.0.0-beta02 contains these commits.</a></p> <p><strong>New Features</strong></p> <ul> <li>Add an experimental annotation to annotate experimental APIs. (<a href="https://android-review.googlesource.com/#/q/I9f1b65a2ed713e5334ef8334a0173fc8794f4d35">I9f1b6</a>)</li> <li>Add a test method to create a test FoldingFeature that accepts a Rect. This will make it easie to test when using Robolectric as opposed to an actual Activity. (<a href="https://android-review.googlesource.com/#/q/Id1cca363c9967bfa560a700e978670472284410f">Id1cca</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>August 18, 2021</p> <p><code translate="no" dir="ltr">androidx.window:window-*:1.0.0-beta01</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/d725303accfa9be6d5c3d61c7603ed1b9a780cbd..f659ade9a1989a7e7f26d1e7f66b19d832ce1cb5/window">Version 1.0.0-beta01 contains these commits.</a></p> <p><strong>New Features</strong></p> <ul> <li>Removed old constants and made <code translate="no" dir="ltr">FoldingFeature</code> into an interface.</li> </ul> <p><strong>API Changes</strong></p> <ul> <li>Remove old constants and make FoldFeature an interface. (<a href="https://android-review.googlesource.com/#/q/I9a2d53acc03284cbdf274f12186e969a769fbd33">I9a2d5</a>)</li> </ul> <p><strong>Bug Fixes</strong></p> <ul> <li>Libraries that depend on the <code translate="no" dir="ltr">Test Core</code> library have been upgraded to version <code translate="no" dir="ltr">1.4.0</code> and will now work with Android platform version S. (<a href="https://android-review.googlesource.com/#/q/I88b726b2d76735ac012ea47298e0bf02092cd857">I88b72</a>, <a href="https://issuetracker.google.com/issues/189353863">b/189353863</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>August 4, 2021</p> <p><code translate="no" dir="ltr">androidx.window:window-*:1.0.0-alpha10</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/19ae3a88ff0824d615355b492cb56049e16991f2..d725303accfa9be6d5c3d61c7603ed1b9a780cbd/window">Version 1.0.0-alpha10 contains these commits.</a></p> <p><strong>New Features</strong></p> <ul> <li>Rename WindowInfoRepo to WindowInfoRepository and adjust corresponding classes / files.</li> <li>Convert current window metrics to a Flow in WindowInfoRepository since the value changes over time.</li> <li>Rename WindowInfoRepoJavaAdapter to WindowInfoRepoCallbackAdapter</li> <li>Add helper method to create test FoldingFeature objects</li> <li>Update packages to group classes based on the feature they are supporting.</li> </ul> <p><strong>API Changes</strong></p> <ul> <li>Rename ActivityExt to ActivityExtensions Change from Repo to Repository. (<a href="https://android-review.googlesource.com/#/q/I61a16da6f3ad5afdfb3171aaf6232d77b07e2466">I61a16</a>)</li> <li>Update packages for classes. (<a href="https://android-review.googlesource.com/#/q/I23ae25660737c35c61685a4b3078282dd23fd0cf">I23ae2</a>)</li> <li>Remove WindowMetrics from WindowInfoRepo (<a href="https://android-review.googlesource.com/#/q/I24663dd37f91f2402b88ab2a90803d8f91da9aca">I24663</a>)</li> <li>Remove WindowManager and use WindowInfoRepo <ul> <li>Make WindowBackend internal. (<a href="https://android-review.googlesource.com/#/q/I06d9a0047401fe2426b78f30f7a8e25bee7d9b1a">I06d9a</a>)</li> </ul></li> <li>Convert window metrics to Flow. <ul> <li>Rename java adapter to WindowInfoRepoCallbackAdapter</li> <li>Remove callbackFlow so no more experimental APIs are in use. (<a href="https://android-review.googlesource.com/#/q/Ia4d152c3cc21ef8c3f90255e65721702cad40585">Ia4d15</a>)</li> </ul></li> <li>Add helper method to create test display features. <ul> <li>Change from occlusionMode to occlusionType (<a href="https://android-review.googlesource.com/#/q/If4cff35f63b253d14abf92f7cd70b69a0858ead5">If4cff</a>)</li> </ul></li> </ul> <p><strong>Bug Fixes</strong></p> <ul> <li>Fix proguard error where core library was being removed.</li> <li>Fix error where WindowLayoutInfo was not being delivered to additional subscribers.</li> <li>Fix error where config changes would not trigger folding feature updates.</li> </ul> <h3 id="1.0.0-alpha09" data-text="Version 1.0.0-alpha09" tabindex="-1">Version 1.0.0-alpha09</h3> <p>June 30, 2021</p> <p><code translate="no" dir="ltr">androidx.window:window-*:1.0.0-alpha09</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/ccf79f53033e665475116a4e78ff124df2a52c4b..19ae3a88ff0824d615355b492cb56049e16991f2/window">Version 1.0.0-alpha09 contains these commits.</a></p> <p><strong>New Features</strong></p> <ul> <li>Change from integer constants to unbounded enums.</li> <li>Add a test util to create test folding features.</li> </ul> <p><strong>API Changes</strong></p> <ul> <li>Add helper method to create test display features. (<a href="https://android-review.googlesource.com/#/q/I3cf548611ee5838486f817b15c82ede61f442f3d">I3cf54</a>) <ul> <li>Change from <code translate="no" dir="ltr">occlusionMode</code> to <code translate="no" dir="ltr">occlusionType</code>.</li> </ul></li> </ul> <p><strong>Bug Fixes</strong></p> <ul> <li>Emit initial value when adding multiple consumers of the data streams.</li> </ul> <h3 id="1.0.0-alpha08" data-text="Version 1.0.0-alpha08" tabindex="-1">Version 1.0.0-alpha08</h3> <p>June 16, 2021</p> <p><code translate="no" dir="ltr">androidx.window:window-*:1.0.0-alpha08</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/ccf79f53033e665475116a4e78ff124df2a52c4b/window">Version 1.0.0-alpha08 contains these commits.</a></p> <p><strong>New Features</strong></p> <ul> <li>Released a testing artifact to make it easier to test when using WindowInfoRepository. Use WindowInfoRepository to get information about DisplayFeatures and the WindowMetrics. (<a href="https://android-review.googlesource.com/c/platform/frameworks/support/+/1702526">I57f66</a>, <a href="https://android-review.googlesource.com/c/platform/frameworks/support/+/1730611">Ida620</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>June 2, 2021</p> <p><code translate="no" dir="ltr">androidx.window:window-*:1.0.0-alpha07</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/86ff5b4bb956431ec884586ce0aea0127e189ec4/window">Version 1.0.0-alpha07 contains these commits.</a></p> <p><strong>New Features</strong></p> <ul> <li>Migrate core window library to Kotlin. Will use coroutines and suspend functions to expose asynchronous data going forward.</li> <li>Add WindowInfoRepo as the main interaction point for getting the WindowMetrics and the stream of WindowLayoutInfo.</li> <li>New <code translate="no" dir="ltr">window-java</code> artifact to expose Java-friendly APIs to register and unregister callbacks.</li> <li>New <code translate="no" dir="ltr">window-rxjava2</code> and <code translate="no" dir="ltr">window-rxjava3</code> artifacts to expose RxJava adapted APIs.</li> </ul> <p><strong>API Changes</strong></p> <ul> <li>Add <code translate="no" dir="ltr">WindowServices</code> to provide dependencies uniformly. <ul> <li>Add coroutine based api to consume window layout info. (<a href="https://android-review.googlesource.com/#/q/Iab70f2a65f5e8db0de2d6d342fc3ab398df91c9e">Iab70f</a>)</li> </ul></li> <li>Migrate core window manager library to Kotlin. (<a href="https://android-review.googlesource.com/#/q/Icca34320c487d70d1d7605f8db2c9965f722dbbb">Icca34</a>)</li> </ul> <p><strong>Bug Fixes</strong></p> <ul> <li>Add new data class to represent feature bounds. (<a href="https://android-review.googlesource.com/#/q/I6dcd12b98be8281c0876c6a7dff3ad7221102cc9">I6dcd1</a>)</li> </ul> <h3 id="window-1.0.0-alpha06" data-text="Version 1.0.0-alpha06" tabindex="-1">Version 1.0.0-alpha06</h3> <p>May 5, 2021</p> <p><code translate="no" dir="ltr">androidx.window:window:1.0.0-alpha06</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/5c42896eb6591b09e3952030fb7ea8d9b8c42713..3d6f168394d1dd14e1d6f5b6dc4a0d405cb1a26a/window/window">Version 1.0.0-alpha06 contains these commits.</a></p> <p><strong>New Features</strong></p> <ul> <li>We have started our migration to Kotlin and will finish in the next release.</li> <li>DeviceState has been removed from the public API, please use FoldingFeature instead.</li> <li>We have removed <code translate="no" dir="ltr">STATE_FLIPPED</code> from the FoldingFeature states since it is not supported by any use-case at the moment.</li> <li>We have also removed other deprecated APIs.</li> </ul> <p><strong>API Changes</strong></p> <ul> <li>Adding Kotlin as a dependency. <ul> <li>Migrate core library to Kotlin. (<a href="https://android-review.googlesource.com/#/q/Idd995cb977e2eadc79623dfb8390cf136f0b5cdf">Idd995</a>)</li> </ul></li> <li>Removed <code translate="no" dir="ltr">DisplayFeature</code> builder. (<a href="https://android-review.googlesource.com/#/q/I61fa463a930f9a98556e5c56b45860fbdc88a04c">I61fa4</a>)</li> <li>Removed <code translate="no" dir="ltr">DeviceState</code> from public api, use <code translate="no" dir="ltr">FoldingFeature</code> instead. (<a href="https://android-review.googlesource.com/#/q/Id6079a0980a7a89e1f72f8074024926ebb646ab9">Id6079</a>)</li> <li>Remove device state callback from extensions. (<a href="https://android-review.googlesource.com/#/q/I5ea837baa8880474f2db5944a9a2878321f32733">I5ea83</a>)</li> <li>Remove <code translate="no" dir="ltr">STATE_FLIPPED</code> from FoldingFeature. (<a href="https://android-review.googlesource.com/#/q/I9c4e1819214647440a1a7886593691f85b385f4d">I9c4e1</a>)</li> <li>Remove deprecated registration methods. (<a href="https://android-review.googlesource.com/#/q/Ib381b2f3ec48fc9181160fc43e231f6457d5ff4e">Ib381b</a>)</li> </ul> <h3 id="window-1.0.0-alpha05" data-text="Version 1.0.0-alpha05" tabindex="-1">Version 1.0.0-alpha05</h3> <p>March 24, 2021</p> <p><code translate="no" dir="ltr">androidx.window:window:1.0.0-alpha05</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/080f233e07421eca8f842f05f11c12b4cdb84f5b..5c42896eb6591b09e3952030fb7ea8d9b8c42713/window/window">Version 1.0.0-alpha05 contains these commits.</a></p> <p><strong>New Features</strong></p> <p>We have added convenience methods to FoldingFeature so that apps can tell if the feature is separating, occluding, and determine the orientation of the hinge. We are also hiding the hinge type so that</p> <p>We are removing the synchronous read methods from WindowManager. Synchronous read methods are error prone since there is an implicit race condition. Register listeners and callbacks to receive updates on the WindowLayoutInfo.</p> <p><strong>API Changes</strong></p> <ul> <li>Add convenience methods for working with FoldingFeatures (<a href="https://android-review.googlesource.com/#/q/Ie733f53b8eaf2226704bb097ed83dc1b6b0e057c">Ie733f</a>)</li> <li>Removes synchronous read methods from WindowManager (<a href="https://android-review.googlesource.com/#/q/I96fd460f1dbde8028d85c7ec9703d71094531411">I96fd4</a>)</li> </ul> <h3 id="window-1.0.0-alpha04" data-text="Version 1.0.0-alpha04" tabindex="-1">Version 1.0.0-alpha04</h3> <p>March 10, 2021</p> <p><code translate="no" dir="ltr">androidx.window:window:1.0.0-alpha04</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/aee18b103203a91ee89df91f0af5df2ecff356d6..52fbd7ed5b07ca4431fa828325a1f8da45b02e51/window/window">Version 1.0.0-alpha04 contains these commits.</a></p> <p><strong>New Features</strong></p> <ul> <li>Fixes a bug where no WindowLayoutInfo is emitted if there isn’t an OEM implementation. Now we emit an empty WIndowLayoutInfo.</li> <li>Fix a bug where state would not update properly if the hinge state changed while the app was backgrounded. Now the state should be consistent.</li> <li>Update our proguard files to ignore warnings from runtime dependencies.</li> </ul> <p><strong>Bug Fixes</strong></p> <ul> <li>Emit an empty value when the OEM library is missing. (<a href="https://android-review.googlesource.com/#/q/Ide935358cb94670673234f2ac6fcc8c689b63244">Ide935</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>February 18, 2021</p> <p><code translate="no" dir="ltr">androidx.window:window:1.0.0-alpha03</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/aee18b103203a91ee89df91f0af5df2ecff356d6..080f233e07421eca8f842f05f11c12b4cdb84f5b/window/window">Version 1.0.0-alpha03 contains these commits.</a></p> <p><strong>New Features</strong></p> <ul> <li>Emit an empty value for WindowLayoutInfo when the OEM implementation is empty. This should make it easier to use the library on more devices. Since the APIs are asynchronous it is still recommended that apps write some defensive code and emit a default value after a timeout. We do not have any guarantees on OEM implementations and the initial value may be delayed.</li> </ul> <p><strong>Bug Fixes</strong></p> <ul> <li>Emit an empty value when the OEM library is missing. (<a href="https://android-review.googlesource.com/#/q/Ide935358cb94670673234f2ac6fcc8c689b63244">Ide935</a>)</li> </ul> <h3 id="window-1.0.0-alpha02" data-text="Version 1.0.0-alpha02" tabindex="-1">Version 1.0.0-alpha02</h3> <p>January 27, 2021</p> <p><code translate="no" dir="ltr">androidx.window:window:1.0.0-alpha02</code> is released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/fca183fb525b93d2002528fbafdb042f2bffdf36..aee18b103203a91ee89df91f0af5df2ecff356d6/window/window">Version 1.0.0-alpha02 contains these commits.</a></p> <p><strong>New Features</strong></p> <ul> <li><p>We have deprecated some APIs to help streamline the api and reduce mistakes. Some notable examples are removing the synchronous read operations from WindowManager and deprecating DeviceState. Synchronous read operations can lead to race conditions and have incorrect UI.</p></li> <li><p>We have converted DisplayFeature to an interface that other features will implement going forward. Our first feature is FoldingFeature which is now the representation of a screen fold or a hinge. This also contains the state of the hinge replacing DeviceState.</p></li> <li><p>WindowMetrics was introduced in Android 11 to provide developers with a simple way to query for metrics about a window, for example its position and size on screen and any system insets. We’ve backported the API in this release so that developers can leverage WindowMetrics and continue to support older Android versions. WindowMetrics can be obtained through the <code translate="no" dir="ltr">WindowManager#getCurrentWindowMetrics()</code> and WindowManager#getMaximumWindowMetrics() APIs.</p></li> </ul> <p><strong>API Changes</strong></p> <ul> <li>Deprecate APIs that will be removed in the next alpha (<a href="https://android-review.googlesource.com/#/q/Ib7cc4ad14fea8c34ef8b94aaa9366fc8cb235a46">Ib7cc4</a>)</li> <li>Updates <code translate="no" dir="ltr">ExtensionInterface</code> to accept explicit Activity references. (<a href="https://android-review.googlesource.com/#/q/I07ded6e81dd3d1006adc11c8b66dccd9caa3000d">I07ded</a>)</li> <li>Introduces the WindowMetrics API. (<a href="https://android-review.googlesource.com/#/q/I3ccee32e7f1b9121de6ad63bae71a5b3d9fb1330">I3ccee</a>)</li> <li>Remove synchronous read methods from WindowManager (<a href="https://android-review.googlesource.com/#/q/I699831b8f202b7b7f70a030b105be8724bb52da3">I69983</a>)</li> <li>Make ExtensionWindowBackend package protected. (<a href="https://android-review.googlesource.com/#/q/Ied2085250ffeb8ec253d4b5dd742300eb08835bc">Ied208</a>)</li> </ul> <p><strong>Bug Fixes</strong></p> <ul> <li>Update <code translate="no" dir="ltr">ExtensionInterface</code> APIs to accept visual contexts. (<a href="https://android-review.googlesource.com/#/q/I8e827eb510c0c36d8877ea589408aab9269db9ea">I8e827</a>)</li> </ul> <p><strong>External Contribution</strong></p> <ul> <li>Merge DeviceState and WindowLayoutInfo so it is easier to access data. (<a href="https://android-review.googlesource.com/#/q/Id34f448e9403aa6462a63b574073a6762365ed6f">Id34f4</a>)</li> </ul> <h3 id="1.0.0-alpha01" data-text="Version 1.0.0-alpha01" tabindex="-1">Version 1.0.0-alpha01</h3> <p>February 27, 2020</p> <p><code translate="no" dir="ltr">androidx.window:window:1.0.0-alpha01</code> and <code translate="no" dir="ltr">androidx.window:window-extensions:1.0.0-alpha01</code> are released. <a href="https://android.googlesource.com/platform/frameworks/support/+log/fca183fb525b93d2002528fbafdb042f2bffdf36/window">Version 1.0.0-alpha01 contains these commits.</a> This is the first release of the Window Manager library.</p> <p><strong>New features</strong></p> <ul> <li><code translate="no" dir="ltr">DisplayFeature</code>: This new API identifies disruptions in the continuous flat screen surfaces such as hinges or folds</li> <li><code translate="no" dir="ltr">DeviceState</code>: This new API provides the current posture of the phone from a list of defined postures (For example, <code translate="no" dir="ltr">CLOSED</code>, <code translate="no" dir="ltr">OPENED</code>, <code translate="no" dir="ltr">HALF_OPENED</code>, etc.)</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-10-16 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-10-16 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&amp;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>{&#34;at&#34;: &#34;True&#34;, &#34;ga4&#34;: [{&#34;id&#34;: &#34;G-QFRN08RN6E&#34;, &#34;purpose&#34;: 0}], &#34;ga4p&#34;: [{&#34;id&#34;: &#34;G-QFRN08RN6E&#34;, &#34;purpose&#34;: 0}], &#34;gtm&#34;: [{&#34;id&#34;: &#34;GTM-KMSWPCJ&#34;, &#34;purpose&#34;: 0}], &#34;parameters&#34;: {&#34;internalUser&#34;: &#34;False&#34;, &#34;language&#34;: {&#34;machineTranslated&#34;: &#34;False&#34;, &#34;requested&#34;: &#34;en&#34;, &#34;served&#34;: &#34;en&#34;}, &#34;pageType&#34;: &#34;article&#34;, &#34;projectName&#34;: &#34;Jetpack&#34;, &#34;signedIn&#34;: &#34;False&#34;, &#34;tenant&#34;: &#34;android&#34;, &#34;recommendations&#34;: {&#34;sourcePage&#34;: &#34;&#34;, &#34;sourceType&#34;: 0, &#34;sourceRank&#34;: 0, &#34;sourceIdenticalDescriptions&#34;: 0, &#34;sourceTitleWords&#34;: 0, &#34;sourceDescriptionWords&#34;: 0, &#34;experiment&#34;: &#34;&#34;}, &#34;experiment&#34;: {&#34;ids&#34;: &#34;&#34;}}}</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="tMZ106fuw+fEr0Ma/V/OV7T72ydW85"> (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,["Cloud__enable_cloudx_ping","MiscFeatureFlags__enable_dark_theme","Profiles__enable_awarding_url","MiscFeatureFlags__emergency_css","Cloud__enable_free_trial_server_call","DevPro__enable_cloud_innovators_plus","MiscFeatureFlags__enable_view_transitions","Profiles__require_profile_eligibility_for_signin","Profiles__enable_release_notes_notifications","Profiles__enable_completecodelab_endpoint","CloudShell__cloud_code_overflow_menu","Analytics__enable_clearcut_logging","Profiles__enable_public_developer_profiles","Concierge__enable_pushui","MiscFeatureFlags__enable_explain_this_code","Profiles__enable_dashboard_curated_recommendations","Profiles__enable_developer_profiles_callout","Search__enable_ai_search_summaries","EngEduTelemetry__enable_engedu_telemetry","MiscFeatureFlags__enable_firebase_utm","Profiles__enable_complete_playlist_endpoint","Profiles__enable_page_saving","Cloud__enable_cloud_shell","Cloud__enable_llm_concierge_chat","Search__enable_ai_eligibility_checks","Search__enable_page_map","MiscFeatureFlags__developers_footer_image","BookNav__enable_tenant_cache_key","MiscFeatureFlags__developers_footer_dark_image","MiscFeatureFlags__enable_variable_operator","Cloud__enable_legacy_calculator_redirect","Cloud__enable_cloudx_experiment_ids","Significatio__enable_by_tenant","TpcFeatures__enable_mirror_tenant_redirects","Cloud__enable_cloud_dlp_service","MiscFeatureFlags__enable_project_variables","Search__enable_suggestions_from_borg","Search__enable_dynamic_content_confidential_banner","Cloud__enable_cloud_facet_chat","Profiles__enable_recognition_badges","Cloud__enable_cloud_shell_fte_user_flow","DevPro__enable_developer_subscriptions","Experiments__reqs_query_experiments","CloudShell__cloud_shell_button","TpcFeatures__enable_required_headers","Profiles__enable_profile_collections"],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,[[2,2],[1,1]]],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>

Pages: 1 2 3 4 5 6 7 8 9 10