Foldable Device (hajtható eszköz) — a mobil kütyűk egy osztálya rugalmas kijelzővel, amely össze- és kihajtáskor megváltoztatja a formai tényezőt. Az ilyen eszközök a kijelző helyzetétől függően egyszerre működnek kompakt telefonként és tabletként. A Android Developers (2025) szerint a hajtható eszközök globális piaca 42%-kal nőtt 2024-ben, és az alkalmazások ehhez a formai tényezőhöz történő adaptálása kötelezővé válik a nagy projektek számára.
Főbb pontok
Foldable Device — egy mobil eszköz rugalmas OLED kijelzővel, amely a mátrix sérülése nélkül összehajtható. Összehajtott állapotban egy ilyen eszköz kompakt és elfér a zsebben, kihajtott állapotban tabletméretű kijelzőt biztosít. Az első tömeggyártott hajtható eszköz a Royole FlexPai (2018) volt, de a kategóriát a Samsung Galaxy Fold (2019) és a Huawei Mate X népszerűsítette.
A hajtható és a hagyományos eszközök közötti legfőbb különbség a csuklópánt (hinge) és a rugalmas kijelző megléte. Összehajtáskor a kijelző nem törik el, hanem a csuklópánt szerkezete által meghatározott sugárban meghajlik. A modern technológiák (UTG — Ultra Thin Glass, 2020+ és Samsung Infinity Flex) akár 200 000 hajtási ciklust is képesek elviselni látható károsodás nélkül.
A fejlesztők számára a hajtható eszközök három kihívást jelentenek: a kijelző méretének megváltozása kihajtáskor, a hajtási vonal (crease) megléte és a félig nyitott állapotban (tabletop mode) történő munka, amikor az eszköz egy felületen szögben áll.
Könyvstílusú (book-style) — Galaxy Z Fold, Google Pixel Fold, OnePlus Open. Külső kijelző (cover screen) összehajtott állapotban történő használathoz, belső rugalmas kijelző (inner screen) tablet módhoz. A külső kijelző képaránya körülbelül 22:9, a belsőé — körülbelül 6:5 vagy 4:3.
Flip-stílusú (flip-style) — Galaxy Z Flip, Motorola Razr, Oppo Find N2 Flip. Függőleges összehajtás, külső kijelző értesítésekhez (1.5–3.5 hüvelyk), belső kijelző — szabvány telefon (6.7–7 hüvelyk). Fő jellemző — félig nyitott állapotban (flex mode) az alkalmazás két zónára oszthatja a kijelzőt: vezérlés felül, tartalom alul.
Kettős kijelző — Microsoft Surface Duo, Lenovo ThinkPhone. Két különálló kijelző csuklópánntal a közepén. Kihajtáskor közös felületet képeznek, de fizikai réssel a kijelzők között. Az API figyelembe veszi a csuklópánt szögét és lehetővé teszi az alkalmazás széthúzódását mindkét kijelzőre.
A Google Jetpack WindowManagert biztosít a hajtható eszközökkel való munkához. Az API három fő összetevőt tartalmaz: WindowLayoutInfo — információ a hajtás helyéről (fold), WindowPosture — az eszköz fizikai helyzete és FoldingFeature — a hajtási terület leírása: tájolás, állapot és szög.
FoldingFeature tartalmazza a hajtás típusát (hinge — csuklópánt, fold — rugalmas kijelző), az állapotot (flat — nyitott, half-opened — félig nyitott, folded — csukott) és a hajtás szögét (0-tól 180 fokig). A szög a szögérzékelővel rendelkező eszközökön érhető el (Galaxy Z Fold, Pixel Fold).
val windowInfoRepository =
WindowInfoTracker.getOrCreate(context)
windowInfoRepository.windowLayoutInfo(context)
.collect { layoutInfo ->
layoutInfo.displayFeatures
.filterIsInstance<FoldingFeature>()
.forEach { feature ->
// hajtás kezelése
}
}
Annak meghatározásához, hogy az eszköz hajtható-e, használja a PackageManager.hasSystemFeature("android.hardware.sensor.hinge_angle") függvényt. A csuklópánntos eszközön ez az érzékelő jelen van — a hagyományos telefonokon hiányzik.
A felület adaptálása — a fejlesztő fő feladata a hajtható eszközök támogatásakor. Kihajtáskor az ablak szélessége megkétszereződhet, és a felületnek egyszerű oszloposból többoszloposra kell váltania. Használja a Window Size Classt az elrendezések váltásához — kihajtáskor az osztály Compactról Expandedre változik.
Fordítson különös figyelmet a konfigurációváltozások kezelésére. Amikor a felhasználó kihajtja az eszközt, az Activity újra létrejőhet. Ha az alkalmazás nem menti az állapotot, a felhasználó elveszíti a bevitt adatokat vagy a görgetési pozíciót. Használja a ViewModelt a kijelző adataihoz és az onSaveInstanceState-t az UI állapotához.
A flex mode (tabletop mode) esetén a dizájnnak két funkcionális zónára kell osztania a kijelzőt. Felső — tartalom megtekintése (videó, galéria, lista), alsó — vezérlés (gombok, vezérlők, billentyűzet). Ezt a mintát videólejátszókban használják: a YouTube a Galaxy Z Flipen felül mutatja a videót, alul az ajánlásokat és a gombokat.
A tesztelés — a hajtható eszközökre történő fejlesztés egyik legnehezebb aspektusa. Az Android Emulator lehetővé teszi a hajtható eszközök szimulációját AVD segítségével "Foldable" konfigurációval (belső 7,6 hüvelykes kijelző, külső 4,6 hüvelykes kijelző). Az emulátor támogatja a csukott és nyitott állapot közötti váltást.
Az emulátorban történő teszteléshez ADB-t használnak. A adb shell am broadcast -a android.intent.action.VIEW -e mode expand parancs kihajtja az eszközt, a adb shell am broadcast -a android.intent.action.VIEW -e mode fold parancs összehajtja. A hajtás szöge is módosítható az emulátor ablakában.
Valós tesztelés fizikai eszközökön ajánlott az átmenet érzésének, a csuklópánt minőségének és a hajtási vonal láthatóságának ellenőrzéséhez. Fő tesztmodellek: Samsung Galaxy Z Fold 6 (könyvstílusú), Samsung Galaxy Z Flip 6 (flip-stílusú), Google Pixel Fold, Motorola Razr 50.
Ne helyezzen kritikus elemeket a hajtási területre. A gombok, beviteli mezők és interaktív elemek legalább 24 dp távolságra legyenek a hajtási vonaltól. A hajtás (crease) — a rugalmas kijelzők elválaszthatatlan tulajdonsága, láthatósága generációról generációra csökken, de nem tűnik el teljesen.
Használjon folytatást megszakítás helyett. Kihajtáskor a tartalomnak folyamatosan kell átmennie a külsőről a belső kijelzőre vagy kitárulnia a teljes területre. Kerülje új Activity betöltését — használja az elrendezés újraszámítását ugyanazon a kijelzőn belül. A Jetpack WindowManager nyomon követi a változásokat és értesíti az alkalmazást a WindowLayoutInfo-n keresztül.
Vegye figyelembe a csuklópánt szögét kreatív forgatókönyvekhez. Fotó- és videóalkalmazásokban a félig nyitott pozíció (90°) állványra változtatja az eszközt: a kamera rögzít, a kijelző alsó része a vezérlőpultot mutatja. Ez a forgatókönyv különösen népszerű a Samsung Camera és a natív alkalmazások körében.
Gyakran ismételt kérdések
Ellenőrizze a PackageManager.FEATURE_SENSOR_HINGE_ANGLE meglétét. Ha true — az eszköz hajtható csuklópánt szögérzékelővel. Ellenőrizze továbbá a DisplayFold API-t.
Iratkozzon fel a WindowInfoTracker.windowLayoutInfo()-ra. A FoldingFeature állapotának változásakor rendezze át a felületet a Window Size Class és a hajtási pozíció szerint.
A Jetpack WindowManager API 14+ alatt működik. De a FoldingFeature.HALF_OPENED-hez API 24+ (Android 7.0) szükséges. A csuklópánt szögérzékelője Android 10+-on érhető el.
Nem. Használja a Window Size Classt és a Layoutomization-t a Jetpack WindowManager-ből. Az egységes kód méretosztály-ellenőrzéssel helyettesíti a külön erőforrás-elrendezéseket.
A legtöbb hajtható eszköz IP48 vagy IP58 védelemmel rendelkezik — korlátozott vízállóság. Víz alatt a rugalmas kijelző megsérülhet, ezért a vízbe merítést a gyártók nem ajánlják.
Összefoglaló
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is