Foldable Device (сгъваемо устройство) — е клас мобилни джаджи с гъвкав дисплей, който променя форм-фактора при сгъване и разгъване. Такива устройства работят и като компактен телефон, и като таблет — в зависимост от позицията на екрана. Според Android Developers (2025), глобалният пазар на сгъваеми устройства е нараснал с 42% през 2024 г. и адаптирането на приложения към този форм-фактор става задължително за големи проекти.
Основни точки
Foldable Device — мобилно устройство с гъвкав OLED дисплей, който може да се сгъва без увреждане на матрицата. В сгънато състояние такова устройство е компактно и се побира в джоба, в разгънато състояние предоставя екран с размер на таблет. Първото масово сгъваемо устройство беше Royole FlexPai (2018), но категорията беше популяризирана от Samsung Galaxy Fold (2019) и Huawei Mate X.
Ключовата разлика между сгъваемите и традиционните устройства е наличието на панта (hinge) и гъвкав дисплей. При сгъване дисплеят не се счупва, а се огъва по радиус, определен от конструкцията на пантата. Съвременните технологии (UTG — Ultra Thin Glass, 2020+ и Samsung Infinity Flex) издържат до 200 000 цикъла на сгъване без видими повреди.
За разработчиците сгъваемите устройства създават три предизвикателства: промяна на размера на екрана при разгъване, наличие на гънка (crease) и работа в полуотворено състояние (tabletop mode), когато устройството стои на повърхност под ъгъл.
Книжни (book-style) — Galaxy Z Fold, Google Pixel Fold, OnePlus Open. Външен екран (cover screen) за използване в сгънато състояние, вътрешен гъвкав дисплей (inner screen) за таблет режим. Съотношението на страните на външния екран е около 22:9, на вътрешния — около 6:5 или 4:3.
Сгъваеми (flip-style) — Galaxy Z Flip, Motorola Razr, Oppo Find N2 Flip. Вертикално сгъване, външен дисплей за известия (1.5–3.5 инча), вътрешен дисплей — стандартен телефон (6.7–7 инча). Основна характеристика — при полуотваряне (flex mode) приложението може да раздели екрана на две зони: управление отгоре, съдържание отдолу.
Двоен екран — Microsoft Surface Duo, Lenovo ThinkPhone. Два отделни дисплея с панта по средата. При разгъване образуват обща площ, но с физическа празнина между екраните. API отчита ъгъла на пантата и позволява на приложението да се простира върху двата екрана.
Google предоставя Jetpack WindowManager за работа със сгъваеми устройства. API включва три ключови компонента: WindowLayoutInfo — информация за местоположението на гънката (fold), WindowPosture — физическото положение на устройството и FoldingFeature — описание на зоната на огъване: ориентация, състояние и ъгъл.
FoldingFeature съдържа тип на сгъване (hinge — панта, fold — гъвкав екран), състояние (flat — отворено, half-opened — полуотворено, folded — затворено) и ъгъл на огъване (от 0 до 180 градуса). Ъгълът е достъпен на устройства с ъглов сензор (Galaxy Z Fold, Pixel Fold).
val windowInfoRepository =
WindowInfoTracker.getOrCreate(context)
windowInfoRepository.windowLayoutInfo(context)
.collect { layoutInfo ->
layoutInfo.displayFeatures
.filterIsInstance<FoldingFeature>()
.forEach { feature ->
// обработка на сгъване
}
}
За да определите дали устройството е сгъваемо, използвайте PackageManager.hasSystemFeature("android.hardware.sensor.hinge_angle"). На устройство с панта този сензор присъства — на обикновените телефони липсва.
Адаптирането на интерфейса — основната задача на разработчика при поддръжка на сгъваеми устройства. При разгъване ширината на прозореца може да се удвои и интерфейсът трябва да се преустрои от едноколонен в многоколонен. Използвайте Window Size Class за превключване между оформления — при разгъване класът се променя от Compact на Expanded.
Обърнете специално внимание на обработката на промени в конфигурацията. Когато потребителят разгъне устройството, Activity може да бъде пресъздадено. Ако приложението не запази състоянието, потребителят ще загуби въведените данни или позицията на превъртане. Използвайте ViewModel за данни на екрана и onSaveInstanceState за UI състояние.
За flex mode (tabletop mode) дизайнът трябва да разделя екрана на две функционални зони. Горна — преглед на съдържание (видео, галерия, списък), долна — управление (бутони, контролери, клавиатура). Този модел се използва във видео плейъри: YouTube на Galaxy Z Flip показва видео отгоре, препоръки и бутони отдолу.
Тестването — един от най-сложните аспекти на разработката за сгъваеми устройства. Android Emulator позволява симулация на сгъваеми устройства чрез AVD с конфигурация "Foldable" (вътрешен 7.6-инчов дисплей, външен 4.6-инчов дисплей). Емулаторът поддържа превключване между сгънато и разгънато състояние.
За тестване в емулатора се използва ADB. Командата adb shell am broadcast -a android.intent.action.VIEW -e mode expand разгъва устройството, adb shell am broadcast -a android.intent.action.VIEW -e mode fold го сгъва. Също така може да се променя ъгълът на огъване в прозореца на емулатора.
Реалното тестване на физически устройства се препоръчва за проверка на усещането за преход, качеството на пантата и видимостта на гънката. Основни модели за тестване: Samsung Galaxy Z Fold 6 (книжен), Samsung Galaxy Z Flip 6 (сгъваем), Google Pixel Fold, Motorola Razr 50.
Не поставяйте критично важни елементи в зоната на огъване. Бутоните, полетата за въвеждане и интерактивните елементи трябва да са на разстояние минимум 24 dp от линията на гънката. Гънката (crease) — неразделно свойство на гъвкавите екрани, видимостта ѝ намалява с всяко поколение, но не изчезва напълно.
Използвайте продължение вместо прекъсване. При разгъване съдържанието трябва плавно да преминава от външния към вътрешния екран или да се разшири върху цялата площ. Избягвайте зареждане на ново Activity — използвайте преизчисляване на оформлението в рамките на същия екран. Jetpack WindowManager проследява промените и уведомява приложението чрез WindowLayoutInfo.
Вземете предвид ъгъла на пантата за творчески сценарии. В приложения за снимки и видео полуотвореното положение (90°) превръща устройството в стойка: камерата снима, долната част на екрана показва контролния панел. Този сценарий е особено популярен в Samsung Camera и родните приложения.
Често задавани въпроси
Проверете наличието на PackageManager.FEATURE_SENSOR_HINGE_ANGLE. Ако е true — устройството е сгъваемо с ъглов сензор на пантата. Допълнително проверете DisplayFold API.
Абонирайте се за WindowInfoTracker.windowLayoutInfo(). При промяна на състоянието на FoldingFeature преустройте интерфейса според Window Size Class и позицията на гънката.
Jetpack WindowManager работи на API 14+. Но за FoldingFeature.HALF_OPENED е необходим API 24+ (Android 7.0). Ъгловият сензор на пантата е достъпен на Android 10+.
Не. Използвайте Window Size Class и Layoutomization от Jetpack WindowManager. Единен код с проверка на класа на размера ще замени отделните ресурсни оформления.
Повечето сгъваеми устройства имат защита IP48 или IP58 — ограничена водоустойчивост. Под вода гъвкавият дисплей може да бъде повреден, поради което потапянето не се препоръчва от производителите.
Обобщение
Ще разработим мобилно приложение под ключ
IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.
Прочетете също