android-foldables-adaptive-uilisted
Install: claude install-skill lenorebreakneck630/claude-zero-to-hero-android-KMP
# Android Foldables and Adaptive UI
## Core Principles
- Never use hardcoded dp breakpoints. Always use `WindowSizeClass` for layout decisions.
- Navigation chrome (bottom bar, rail, drawer) should adapt to width, not device type.
- Two-pane layouts should degrade gracefully to single-pane on compact screens.
- Foldable postures (table-top, book mode) are additive — they adjust an existing adaptive layout.
- Test on resizable emulator, not just specific device profiles.
---
## Dependencies
```kotlin
// build.gradle.kts (app or feature module)
implementation(libs.androidx.adaptive)
implementation(libs.androidx.adaptive.layout)
implementation(libs.androidx.adaptive.navigation)
implementation(libs.androidx.window)
implementation(libs.androidx.navigation.compose)
```
Version catalog entries:
```toml
[libraries]
androidx-adaptive = { module = "androidx.compose.material3.adaptive:adaptive", version.ref = "adaptiveLayout" }
androidx-adaptive-layout = { module = "androidx.compose.material3.adaptive:adaptive-layout", version.ref = "adaptiveLayout" }
androidx-adaptive-navigation = { module = "androidx.compose.material3.adaptive:adaptive-navigation", version.ref = "adaptiveLayout" }
androidx-window = { module = "androidx.window:window", version.ref = "androidxWindow" }
```
---
## WindowSizeClass
### Obtaining the Class
Obtain `WindowSizeClass` once at the Activity level and propagate it down via `CompositionLocal` or pass it explicitly:
```kotlin
class MainActivity : Compone