On this page
Our Adaptive UI in Compose guide covers the layout basics. This article goes further: foldable postures, continuity across configuration changes, input devices, multi-window, and the platform changes that make large-screen support mandatory.
The device landscape
Why it's no longer optional
From Android 16 (API 36), for apps targeting it, the system ignores manifest restrictions on orientation, resizability and aspect ratio on large screens (smallest width at least 600dp), with a temporary opt-out that is removed in the following version. Combined with Play's target API requirements (new apps and updates must target API 36 from August 31, 2026), most apps must now handle being resized and rotated on tablets and foldables.
Canonical layouts
- List-detail: side-by-side panes on wide windows (
ListDetailPaneScaffold). - Supporting pane: main content plus contextual content.
- Feed: adaptive grids.
- Navigation:
NavigationSuiteScaffoldswitches between bottom bar, rail and drawer.
Foldable postures
@Composable
fun rememberIsTabletop(): Boolean {
val context = LocalContext.current
val layoutInfo by remember(context) {
WindowInfoTracker.getOrCreate(context).windowLayoutInfo(context as Activity)
}.collectAsStateWithLifecycle(initialValue = null)
val fold = layoutInfo?.displayFeatures?.filterIsInstance<FoldingFeature>()?.firstOrNull()
return fold?.state == FoldingFeature.State.HALF_OPENED &&
fold.orientation == FoldingFeature.Orientation.HORIZONTAL
}
// Tabletop: e.g. video on the top half, controls on the bottom half.The Material 3 adaptive library also exposes posture information through currentWindowAdaptiveInfo(), avoiding manual WindowManager plumbing in many cases.
Continuity across changes
Folding, unfolding, resizing and rotating trigger configuration changes. Users expect to keep their place:
- Keep state in ViewModels and
rememberSaveable, not in composables tied to a layout. - Preserve scroll position and selection when switching between one and two panes.
- Don't restart video or lose form input on fold or unfold.
Input: keyboard, mouse, stylus
Modifier
.onPreviewKeyEvent { event ->
if (event.type == KeyEventType.KeyDown && event.isCtrlPressed && event.key == Key.N) {
onNewItem(); true
} else false
}
.pointerHoverIcon(PointerIcon.Hand) // mouse cursor feedback- Support Tab navigation and visible focus indicators.
- Support right-click context menus and drag and drop where it makes sense.
- Support stylus input for drawing and handwriting apps.
Multi-window and desktop windowing
- Your app can be split-screen, free-form or in a desktop window. Handle any size.
- Don't pause playback in
onPausewhen visible in multi-window. UseonStop. - Multi-instance and opening content in a new window can suit document-style apps.
Testing
- Use resizable and foldable emulators, and the desktop emulator.
- Use Compose previews with multiple device specs.
- Check the large screen app quality checklist.
Use cases
Email or chat
List-detail on tablets, with keyboard shortcuts for power users.
Video
Tabletop mode with controls below the fold.
Notes
Stylus input, drag and drop, multi-window.
Frequently asked questions
Can I lock my app to portrait?
On phones, yes. On large screens, apps targeting Android 16+ have orientation locks ignored (except for some categories like games). Design to adapt.
Do I need separate tablet layouts?
Not separate apps. Use adaptive layouts that respond to window size classes.
Conclusion
Large-screen support means adaptive layouts by window size, posture awareness on foldables, continuity across changes, full keyboard, mouse and stylus support, and correct multi-window behaviour, which is now required in practice by platform changes.
Next step: explore AI-ready app capabilities with AppFunctions and the Android AI Ecosystem.
Official references
๐ฑ Apps built by Yunok Tech
Real Android apps on Google Play, free to download.
Walzi4K wallpapers for lock and home screenGet it โธ
NotiVaultNotification history: recover dismissed notificationsGet it โธ
Ready to build real Android applications?
Jetpack Compose clicks once you build real screens with real state. Practise modern Android UI development on projects that go beyond toy examples.
Move beyond theory and strengthen your Android development skills with Yunoktech's Android course. Learn core concepts, practical implementation, modern Android development techniques, and the reasoning behind building maintainable applications.
Explore the Android course and take your next step as an Android developer.