Window Size Class — шта је то, класе величина и развој

Аутор: IT Sectr Објављено: 2026-06-08 Време читања: 9 мин

Window Size Class је API из Jetpack WindowManager-а који дели прозор апликације на три категорије: Compact, Medium и Expanded. Уместо провере физичке резолуције или густине пиксела, класе анализирају доступну ширину у dp — ово даје предвидљив резултат на било ком уређају. Према Android Developers Documentation (2025), Window Size Class је постао стандард за адаптивне интерфејсе у Jetpack Compose и View систему захваљујући WindowManager-у.

Главно

  • Window Size Class — API за категоризацију ширине прозора на Compact, Medium и Expanded.
  • Compact — класа за уске прозоре до 600 dp, типичне за телефоне у портретном режиму.
  • Medium — класа за прозоре 600–840 dp, карактеристичне за таблете у портрету и телефоне у пејзажу.
  • Expanded — класа за широке прозоре од 840 dp, који се срећу на таблетима и десктопу.
  • Material Design 3 користи Window Size Class као основу за adaptive layout.

Шта је Window Size Class?

Window Size Class је API платформе Android, део библиотеке Jetpack WindowManager, који класификује доступни простор прозора апликације у три категорије. За разлику од традиционалног приступа са квантификаторима ресурса (small/large/xlarge), Window Size Class пружа дискретни скуп вредности на које се програмер може ослонити при пројектовању интерфејса.

API се појавио у Android 7.0 Nougat као део подршке за режим више прозора, али активно увођење је почело са Jetpack WindowManager 1.1 (2022). Google препоручује Window Size Class као главни алат за изградњу адаптивних распореда уместо провере ширине екрана кроз Display.getSize().

Класификација се заснива на ширини прозора у dp, а не на физичкој величини или густини пиксела. То значи да ће два уређаја са различитом резолуцијом, али истом ширином у dp добити исту класу — интерфејс ће бити предвидљиво исти.

Три класе величина прозора Android-а

Compact — класа за прозоре ширине до 600 dp. Телефон у портретном режиму, већина склопивих телефона (Galaxy Z Flip) у затвореном стању. Интерфејс се гради у једној колони, навигација преко Bottom Navigation.

Medium — класа за прозоре ширине 600–840 dp. Таблет у портрету, телефон у пејзажу, склопиви уређај у полуотвореном стању. Интерфејс користи две колоне — на пример, листа лево и детаљи десно. Navigation Rail замењује Bottom Navigation.

Expanded — класа за прозоре ширине од 840 dp. Таблет у пејзажу, десктоп прозор, склопиви уређај у расклопљеном стању. Интерфејс може користити три или више панела, Permanent Navigation Drawer, панеле алата.

У Material Design 3 за сваку класу су дефинисани адаптивни компоненти: Navigation Rail за Medium, Navigation Drawer за Expanded, Bottom Navigation за Compact. Програмер не мора да бира breakpoints — они су већ постављени API-јем.

Како ради Window Size Class

Window Size Class се израчунава на основу тренутне ширине прозора апликације у dp, узимајући у обзир системске елементе — статусну траку, навигациони панел, поделу екрана у Split Screen-у. API реагује на промену конфигурације прозора: ротацију уређаја, улазак у режим више прозора, расклапање склопивог уређаја.

За добијање класе користи се класа WindowSizeClass из библиотеке androidx.window. Програмер се претплаћује на Flow (Kotlin) или LiveData (Java), који аутоматски ажурира класу при свакој промени величине прозора — без ручне обраде onConfigurationChanged.

Класификација се одвија у три корака. Први — мерење тренутне ширине прозора у пикселима. Други — конверзија у dp преко DisplayMetrics.density. Трећи — поређење добијене вредности са границама: мање од 600 dp — Compact, 600–840 — Medium, од 840 — Expanded.

kotlin
val windowSizeClass = currentWindowAdaptiveInfo().windowSizeClass()

when (windowSizeClass.windowWidthSizeClass) {
    WindowWidthSizeClass.COMPACT -> // компактна ширина
    WindowWidthSizeClass.MEDIUM  -> // средња ширина
    WindowWidthSizeClass.EXPANDED -> // проширена ширина
}

Поред ширине (windowWidthSizeClass), API пружа класу за висину прозора (windowHeightSizeClass) — корисну за пејзажну оријентацију и десктоп прозоре.

Window Size Class у Jetpack Compose

У Jetpack Compose Window Size Class се користи кроз функцију currentWindowAdaptiveInfo(), која враћа WindowAdaptiveInfo са класама ширине и висине. Ова функција узима у обзир не само величину прозора, већ и тип уноса (тастатура, миш, додир) — кроз WindowPosture и WindowLayoutInfo.

Типичан сценарио — пребацивање између распореда у зависности од класе. На пример, на Compact се приказује BottomSheet са избором, на Medium — бочни панел, на Expanded — стални Navigation Drawer.

kotlin
@Composable
fun AdaptiveNavigation(windowSizeClass: WindowWidthSizeClass) {
    when (windowSizeClass) {
        WindowWidthSizeClass.COMPACT -> BottomNavigation()
        WindowWidthSizeClass.MEDIUM  -> NavigationRail()
        WindowWidthSizeClass.EXPANDED -> NavigationDrawer()
    }
}

У Material Design 3 компоненте NavigationSuiteScaffold се аутоматски прилагођавају Window Size Class-у — програмер не мора да пише условну логику.

Window Size Class и Material Design 3

Material Design 3 (Material You) је потпуно интегрисан са Window Size Class-ом. Систем adaptive layout-а у Material 3 одређује који навигациони компонент користити у свакој класи: BottomNavigation за Compact, NavigationRail за Medium, NavigationDrawer за Expanded.

Ова интеграција ради на нивоу Adaptive API-ја, који комбинује Window Size Class са другим сигналима — FoldState (склопиви уређај) и WindowPosture (положај екрана). Adaptive API је доступан кроз библиотеку material3-adaptive.

Material 3 пружа четири адаптивна компонента високог нивоа: ListDetailPaneScaffold, SupportingPaneScaffold, NavigationSuiteScaffold и AdaptiveSheet. Сваки од њих мења своје понашање у зависности од Window Size Class-а без додатне конфигурације.

КласаNavigation ComponentPane Scaffold
CompactBottom NavigationСкривени панел
MediumNavigation RailИзвлачећи панел
ExpandedNavigation DrawerСтални панел

Предности адаптивних распореда

Коришћење Window Size Class-а даје три кључне предности у мобилном развоју. Прва — предвидљивост: уместо стотина комбинација величина екрана, програмер ради са три класе. Ово драстично смањује број тест сценарија и грешака везаних за распоред.

Друга — аутоматска адаптација на режим више прозора. Када корисник уђе у Split Screen, ширина прозора се мења — Window Size Class се тренутно прерачунава, а интерфејс се прилагођава. Без овог API-ја, апликација у подељеном екрану приказује смањену верзију интерфејса за телефон.

Трећа — конзистентност са Material Design 3. Google је уградио Window Size Class у систем адаптивних компонената, тако да интерфејси изграђени на Material 3 аутоматски прате препоруке Google-а за дизајн великих екрана без додатног рада.

Често постављана питања

По чему се Window Size Class разликује од Screen Size Buckets?

Screen Size Buckets (small/large/xlarge) — застарели приступ Android 1.6–6.0 заснован на физичкој величини екрана. Window Size Class се оријентише на доступну ширину прозора у dp и ради у реалном времену при промени величине прозора.

Да ли је потребно подржавати Window Size Class на Android 6 и старијим?

Window Size Class је доступан кроз Jetpack WindowManager на Android 7.0+ са backport библиотеком. За Android 6 и старије — само Compact, јер multi-window не постоји. Користите fallback кроз WindowMetrics.

Како Window Size Class ради на склопивим уређајима?

При расклапању уређаја, ширина прозора се мења и Window Size Class се аутоматски прерачунава. Класа се може променити са Compact на Expanded због повећања доступне површине.

Може ли се Window Size Class користити у XML-у (Views)?

Да, кроз WindowManager у Activity или Fragment-у. Након добијања WindowSizeClass-а, користите условну логику за пребацивање између XML распореда или промену видљивости View-а.

Које границе се користе за WindowHeightSizeClass?

За висину прозора границе су другачије: Compact — до 480 dp, Medium — 480–900 dp, Expanded — од 900 dp. WindowHeightSizeClass је користан у пејзажној оријентацији и на десктопу.

Закључак

  • Window Size Class — API Jetpack WindowManager-а за категоризацију ширине прозора на Compact, Medium и Expanded.
  • Compact — до 600 dp, једно-колони интерфејс, Bottom Navigation.
  • Medium — 600–840 dp, дво-колони интерфејс, Navigation Rail.
  • Expanded — од 840 dp, више-панел интерфејс, Navigation Drawer.
  • Jetpack Compose — функција currentWindowAdaptiveInfo() за добијање класе у радно време.
  • Material Design 3 — адаптивне компоненте аутоматски реагују на Window Size Class.
  • Закључак — Window Size Class замењује традиционалну адаптацију на breakpoints и чини интерфејсе предвидљивим на свим уређајима.

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође