A new WindowSizeClass will be returned whenever a configuration change causes the width or height of the window to cross a breakpoint, such as when the device is rotated or the window is resized.
importandroidx.activity.ComponentActivityimportandroidx.activity.compose.setContentimportandroidx.compose.material3.windowsizeclass.WindowWidthSizeClassimportandroidx.compose.material3.windowsizeclass.calculateWindowSizeClassclassMyActivity:ComponentActivity(){overridefunonCreate(savedInstanceState:Bundle?){super.onCreate(savedInstanceState)setContent{// Calculate the window size class for the activity's current window. If the window// size changes, for example when the device is rotated, the value returned by// calculateSizeClass will also change.valwindowSizeClass=calculateWindowSizeClass(this)// Perform logic on the window size class to decide whether to use a nav rail.valuseNavRail=windowSizeClass.widthSizeClass > WindowWidthSizeClass.Compact// MyScreen knows nothing about window size classes, and performs logic based on a// Boolean flag.MyScreen(useNavRail=useNavRail)}}}
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2025-05-15 UTC.
[null,null,["Last updated 2025-05-15 UTC."],[],[],null,["# androidx.compose.material3.windowsizeclass\n==========================================\n\nCommon/AllAndroid/JVM\n\nClasses\n-------\n\n|-------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|-----|\n| [WindowHeightSizeClass](/reference/kotlin/androidx/compose/material3/windowsizeclass/WindowHeightSizeClass) | Height-based window size class. | Cmn |\n| [WindowSizeClass](/reference/kotlin/androidx/compose/material3/windowsizeclass/WindowSizeClass) | Window size classes are a set of opinionated viewport breakpoints to design, develop, and test responsive application layouts against. | Cmn |\n| [WindowWidthSizeClass](/reference/kotlin/androidx/compose/material3/windowsizeclass/WindowWidthSizeClass) | Width-based window size class. | Cmn |\n\nAnnotations\n-----------\n\n|-------------------------------------------------------------------------------------------------------------------------------------------------|---|-----|\n| [ExperimentalMaterial3WindowSizeClassApi](/reference/kotlin/androidx/compose/material3/windowsizeclass/ExperimentalMaterial3WindowSizeClassApi) | | Cmn |\n| [TestOnly](/reference/kotlin/androidx/compose/material3/windowsizeclass/TestOnly) | | Cmn |\n\nTop-level functions summary\n---------------------------\n\n|-------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------|\n| [WindowSizeClass](/reference/kotlin/androidx/compose/material3/windowsizeclass/WindowSizeClass) | `@`[ExperimentalMaterial3WindowSizeClassApi](/reference/kotlin/androidx/compose/material3/windowsizeclass/ExperimentalMaterial3WindowSizeClassApi) `@`[Composable](/reference/kotlin/androidx/compose/runtime/Composable) [calculateWindowSizeClass](/reference/kotlin/androidx/compose/material3/windowsizeclass/package-summary#calculateWindowSizeClass(android.app.Activity))`(activity: `[Activity](https://developer.android.com/reference/android/app/Activity.html)`)` Calculates the window's [WindowSizeClass](/reference/kotlin/androidx/compose/material3/windowsizeclass/WindowSizeClass) for the provided [activity](/reference/kotlin/androidx/compose/material3/windowsizeclass/package-summary#calculateWindowSizeClass(android.app.Activity)). | android |\n\nTop-level functions\n-------------------\n\n### calculateWindowSizeClass\n\nandroid \nArtifact: [androidx.compose.material3:material3-window-size-class](/jetpack/androidx/releases/compose-material3) \n[View Source](https://cs.android.com/search?q=file:androidx/compose/material3/windowsizeclass/AndroidWindowSizeClass.android.kt+function:calculateWindowSizeClass) \n\n```\n@ExperimentalMaterial3WindowSizeClassApi\n@Composable\nfun calculateWindowSizeClass(activity: Activity): WindowSizeClass\n```\n\nCalculates the window's [WindowSizeClass](/reference/kotlin/androidx/compose/material3/windowsizeclass/WindowSizeClass) for the provided [activity](/reference/kotlin/androidx/compose/material3/windowsizeclass/package-summary#calculateWindowSizeClass(android.app.Activity)).\n\nA new [WindowSizeClass](/reference/kotlin/androidx/compose/material3/windowsizeclass/WindowSizeClass) will be returned whenever a configuration change causes the width or height of the window to cross a breakpoint, such as when the device is rotated or the window is resized. \n\n```kotlin\nimport androidx.activity.ComponentActivity\nimport androidx.activity.compose.setContent\nimport androidx.compose.material3.windowsizeclass.WindowWidthSizeClass\nimport androidx.compose.material3.windowsizeclass.calculateWindowSizeClass\n\nclass MyActivity : ComponentActivity() {\n override fun onCreate(savedInstanceState: Bundle?) {\n super.onCreate(savedInstanceState)\n setContent {\n // Calculate the window size class for the activity's current window. If the window\n // size changes, for example when the device is rotated, the value returned by\n // calculateSizeClass will also change.\n val windowSizeClass = calculateWindowSizeClass(this)\n // Perform logic on the window size class to decide whether to use a nav rail.\n val useNavRail = windowSizeClass.widthSizeClass \u003e WindowWidthSizeClass.Compact\n\n // MyScreen knows nothing about window size classes, and performs logic based on a\n // Boolean flag.\n MyScreen(useNavRail = useNavRail)\n }\n }\n}\n```"]]