三星摺疊屏開發者設計指南揭祕
開發者的設計指南

image.png

image
在可摺疊裝置上提供出色的使用者體驗,首要確保您的應用程式已準備好兩件事:
其一,可在兩個螢幕之間無縫切換;
其二,在多視窗模式下處於活動狀態。

image
1. APP連續性:展折開合,順暢切換
可摺疊裝置展開時,當前應用頁面必須無縫延續到另一個螢幕,並可自動調整大小匹配新的佈局,反之亦然。也就是說,應用程式需要準備好在多個螢幕(不同解析度、密度等)之間切換。

image
對於APP連續性,谷歌提供了螢幕連續性可應對這類需求。
1.1 執行時配置變更 - 系統預設
摺疊/展開的操作過程將觸發系統嚮應用傳送新佈局的配置更改,包括smallestScreenSize, screenSize 和 screenLayout 的配置。

image
每當發生配置更改時,Android預設情況下會重啟正在執行的Activity(先後呼叫onDestroy()和onCreate())。目的是使用與新裝置匹配的備用資源自動重新載入您的應用。
當Activity重啟時,恢復之前的狀態很重要。在銷燬Activity之前,可以呼叫onSaveInstanceState()來儲存應用狀態的資料;之後在onCreate()或onRestoreInstanceState()中恢復Activity狀態。
不要在活動的OnDestroy()中呼叫finish()或自行終止程序,否則將導致APP在裝置摺疊或展開時關閉。
1.2 執行時系統變更 - 自行處理
如果因效能限制等因素希望在不自動重啟Activity的情況下處理配置更改,您需要在應用清單manifest中增加android:configChanges屬性,並至少包含以下配置值:

image
當指定的屬性(可摺疊裝置的摺疊/展開時觸發)發生變化時,MyActivity不會重啟,而是會收到 onConfigurationChanged()的呼叫,在此方法中處理配置變更,更新檢視佈局、重新載入資源。通過此方法即能實現在系統不重啟Activity的情況下重置UI。
1.3 參考資料
- 請參閱Android開發者指南中的詳細資訊 – 執行時配置變更:
https://developer.android.google.cn/guide/topics/resources/runtime-changes
- 三星開發者網站:
https://developer.samsung.com/galaxy/foldable/techdocs#app-continuity
2. Multi-resume:
應用多開,引人入勝
“手機一秒變平板”,螢幕物理尺寸的變大,多視窗分屏預計將成為可摺疊手機最常用的功能之一。而 Multi-resume 就是為了讓多視窗分屏的體驗更佳而出現的。
2.1 什麼是Multi-resume
谷歌在Android 7.0 時代便支援了多視窗分屏功能,即多個應用可同時共享螢幕,但問題是多個應用無法同時使用,只有具有焦點的應用才能保持在活動(resume)狀態,其它應用會暫停執行。
從 Android P (9.0) 開始,谷歌提供了名為Multi-resume的新功能,允許裝置廠商在多視窗模式下保持所有可見應用處於活動狀態,解決了分屏的多個應用僅有一個能保持活動狀態的問題。
谷歌擬在下一個版本 Android Q優化該功能的相容性,Multi-resume有望成為必選行為。

image
2.2 APP如何在Multi-resume執行
在Android P (9.0)中啟用Multi-resume,請在應用清單manifest中增加如下元資料:

image
3. 更多指引:佈局優化,面面俱到
3.1 最大縱橫比
三星可摺疊裝置外屏將具有長縱橫比(21:9),請確保您的應用程式支援長縱橫比。
詳細適配方法請參考:
3.2 優化內外屏佈局
可摺疊移動裝置中,應用程式可以執行在大小不同的顯示螢幕中,我們首先建議新增一個單獨的資原始檔夾來展示更豐富更清晰的內容。
優化方法包括靈活佈局、備用佈局、可拉伸圖片等方式:
-
靈活佈局,確保佈局的調整適應螢幕尺寸的變化,核心原則是避免對介面元件的位置和大小硬編碼,可使用”wrap_content”和”match_parent”尺寸值來代替硬編碼尺寸;使用RelativeLayout根據元件之間的空間關係指定佈局。
-
備用佈局,Android允許應用針對不同螢幕配置提供多種備選佈局。可以利用 配置限定符 實現此目的,它允許系統根據當前配置(如針對不同螢幕尺寸的不同佈局設計)自動選擇合適的資源。
例如:單窗格(預設)佈局:res/layout/main.xml
雙窗格佈局:res/layout-large/main.xml (目錄名稱中的large為限定符)
-
可拉伸圖片,由於佈局可拉伸以適應不同的螢幕,附加在檢視之上的點陣圖也應可拉伸。但朝任意方向拉伸普通點陣圖可能導致縮放失真或圖片傾斜,解決方案是使用 九宮格點陣圖 ,這種特殊格式的PNG檔案可指定可拉伸的小畫素區域,哪些區域不可拉伸。
-
詳細資料請參考: https://developer.android.com/guide/practices/screens_support
3.3 顯示屏配置參考

image
3.4 Foldable模擬器測試
- 模擬器:
FoldableEmulator_1.0.1.apk
Version:1.0.1
- 下載地址:
https://developer.samsung.com/galaxy/foldable#essentials
模擬測試方法

image
1. 應用連續性
應用連續性是摺疊屏手機的一大亮點,當在外屏和內屏之間切換時,應用保持執行狀態,並會自動調整大小以匹配新的佈局。
開發過程中可使用 AVD Manager 除錯應用連續性,進行屏幕布局改變的測試。 AVD Manager (Android Virtual Device Manager)是Android虛擬驅動管理器,主要用來建立安卓模擬器。該模擬器可在Android Studio 和 Android平板電腦裡執行。
2. 如何使用AVD
1)進入Android Studio-> AVD Manager
Google官網下載地址:
https://developer.android.google.cn/studio/install
2)建立虛擬裝置

image
3)選擇裝置
- 平板電腦> Nexus 10

image
4)選擇系統映象
- 可選擇Android9.0開源專案映象(可下載)

image
- 或者選擇Android 9.0 Google映象(可下載)

image
5)配置方法
- 選擇Portrait,其他使用預設值

image
6)執行AVD

image
3. 如何安裝執行摺疊屏模擬器
1)下載摺疊屏模擬器:
FoldableEmulator_1.01.apk
可進入下面的網頁進行下載:
https://developer.samsung.com/galaxy/foldable/test
2)安裝摺疊屏模擬器

image
- 安裝後,從應用列表中開啟應用程式“可摺疊模擬器”。
3) 許可權授予

image
- “SYSTEM_ALERT_WINDOW”許可權也可以在activity中授予,在應用程式啟動時顯示,無需使用上述命令授予。
4) 模擬方法

image
4. 多活動視窗
當手機展開時,使用者可以同時執行兩到三個APP,可在任意Samsung Android 9.0裝置上通過元資料方式測試多活動視窗。
-
在AndroidManifest中宣告元資料
image
-
在多視窗模式下執行您的應用程式
-
通過點選其他應用將焦點從第一個應用移動到另一個應用
-
檢查應用程式是否仍處於resumed狀態
-
當您的應用意外丟失資源(例如相機)時,檢查應用是否有任何意外行為
5. 測試用例
下面的測試用例包括應用程式連續性和多活動視窗的場景,可作為應用測試用例的補充。

image
【附】相關資料

image