Foldable Device (αναδιπλούμενη συσκευή) — είναι μια κατηγορία κινητών gadget με εύκαμπτη οθόνη που αλλάζει παράγοντα μορφής κατά την αναδίπλωση και το άνοιγμα. Τέτοιες συσκευές λειτουργούν τόσο ως συμπαγές τηλέφωνο όσο και ως tablet — ανάλογα με τη θέση της οθόνης. Σύμφωνα με το Android Developers (2025), η παγκόσμια αγορά αναδιπλούμενων συσκευών αυξήθηκε κατά 42% το 2024 και η προσαρμογή εφαρμογών σε αυτόν τον παράγοντα μορφής γίνεται υποχρεωτική για μεγάλα έργα.
Κύρια σημεία
Foldable Device — είναι μια κινητή συσκευή με εύκαμπτη οθόνη OLED που μπορεί να διπλωθεί χωρίς να καταστραφεί η μήτρα. Σε διπλωμένη κατάσταση, μια τέτοια συσκευή είναι συμπαγής και χωράει στην τσέπη, σε ανοιχτή κατάσταση παρέχει οθόνη μεγέθους tablet. Η πρώτη μαζική αναδιπλούμενη συσκευή ήταν το 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) για λειτουργία tablet. Η αναλογία διαστάσεων της εξωτερικής οθόνης είναι περίπου 22:9, της εσωτερικής — περίπου 6:5 ή 4:3.
Flip (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 (flip), 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. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης