1. 程式人生 > 資訊 >vivo X Fold 摺疊屏適配官方指南釋出:應用大小可調、不同解析度佈局、大屏體驗

vivo X Fold 摺疊屏適配官方指南釋出:應用大小可調、不同解析度佈局、大屏體驗

4 月 30 日訊息,前幾天,vivo 首款摺疊屏手機正式官宣,為讓開發者更好地適配新機型,vivo 團隊特推出了全新的適配指南。

vivo 摺疊屏有展開態和摺疊態,這兩種狀態下螢幕的解析度是不同的。因此,在摺疊屏狀態切換時,解析度也要動態切換。

如果 App 或 activity 不支援不同解析度螢幕自動適配,則會存在一些顯示異常的問題,例如下圖所示的左右或下半屏存黑邊問題:

展開態 ▼

摺疊態 ▼

適配建議

#01

讓應用大小可調

為了加強使用者體驗,摺疊屏在展開態和摺疊態動態切換時,應用介面不允許存在左右黑邊或下半屏黑邊的情況(即應用進入相容模式),因此需要應用支援不同解析度情況下頁面大小可調。

此功能由 android:resizeableActivity 屬性控制,在應用的 AndroidManifest.xml 中可以針對 App 或 activity 進行設定。

<applicationandroid:resizeableActivity="true"><activityandroid:resizeableActivity="true"/></application>

Note:

1. 當應用的 targetSdkVersion >=24 時,android 系統預設設定 android:resizeableActivity="true",不需要應用宣告即可支援應用大小可調。當應用的 targetSdkVersion < 24 時,需要應用針對 application 或 activity 設定 android:resizeableActivity="true"。

2. application android:resizeableActivity="true" 時,會針對 App 的所有 activity 生效,因此當應用只需要宣告單獨的 activity 時,可以只針對單個 activity 進行設定。

系統側建議:針對 application 設定 android:resizeableActivity="true",避免應用部分頁面在摺疊屏狀態變化後存在黑邊問題。

其他適配事項可以參考 Android 開發者適配指導 (例如連結中提到的儲存介面狀態和支援配置變更部分):

https://developer.android.com/guide/topics/ui/foldables?hl=zh-cn

3.設定 android:resizeableActivity="true" 後,應用即可進入分屏模式,若不想進入分屏模式(進入分屏模式後會有一些適配問題)又不被當做相容模式,可以在 Activity 里加上如下程式碼:

<meta-dataandroid:name="android.supports_size_changes"android:value="true"/>

#02

不同解析度佈局適配

摺疊屏涉及到不同的解析度尺寸和 DPI,應用介面除了要保證解析度切換時無黑邊問題外,還需要保證應用介面在不同解析度顯示時頁面無明顯的拉伸、錯位和重疊等問題,因此需要優化佈局和提供對應的點陣圖來進行適配。

詳細適配方法可參考以下連結:

https://developer.android.com/training/multiscreen/screensizes?hl=zh-cn

#03

適配大屏體驗

在大屏適配時,部分顯示頁面僅僅只是放大,而沒有利用大屏的空間展示更多內容。

因此,開發者們需要有效利用大屏空間調整佈局展示,顯示更多的內容。

要解決此類顯示問題,開發者們可以在 AndroidManifest.xml android:configChanges 中宣告 "screenSize" 變化,然後在 onConfigurationChanged 中動態調整佈局。

詳細適配方法可以參考以下連結:

https://developer.android.com/guide/topics/resources/runtime-changes?hl=zh-cn

#04

判定摺疊屏方法

執行時判斷:

android.util.FtDeviceInfo

public static String getDeviceType

返回的三種類型:phone、tablet 和 foldable

開發者可以通過反射的方式獲取裝置型別,返回值 foldable 表示摺疊屏裝置。

反射程式碼示例:

privatestaticbooleanisVivoFoldableDevice(){try{Class<?>c=Class.forName("android.util.FtDeviceInfo");Methodm=c.getMethod("getDeviceType");ObjectdType=m.invoke(c);Log.d("fold","getDeviceType="+dType);return"foldable".equals(dType);}catch(Exceptione){e.printStackTrace();}returnfalse;}

#05

機型配置

若應用已經針對其他廠家摺疊屏裝置進行了適配,新的摺疊屏裝置根據機型名配置即可生效,可直接配置 vivo 摺疊屏 model 型號 V2178A。

除錯和驗證

#01

手機除錯

DPI 設定:adbshell wm density 480

展開態:adb shell wm size 1916x2160

摺疊態:adb shell wm size 1080x2520

Note:

1. 摺疊屏展開態和摺疊態 DPI 一樣都是 480,只需要設定一次

2. 展開態和摺疊態進行切換時,可以通過設定不同的解析度來進行模擬切換

3.檢視手機當前 DPI 和 size 的方法:adb shell wm density 和 adb shell wm size

4. DPI 和解析度設定後,重啟手機設定不會發生變化,若需要調回手機預設值,可通過 adb shell wm size reset 和 adb shell wm density reset 進行恢復

5. 由於 Android 模擬器除錯效率問題,推薦用手機模擬除錯和驗證;若需要 100% 還原真機物理尺寸,可考慮模擬器

#02

模擬器除錯

除了通過手機動態切換解析度的方式來進行除錯外,還可通過模擬器進行除錯和驗證。Android Studio 模擬器 Phone 分類支援 8 英寸和 7.3 英寸的摺疊屏除錯,但是無法克隆(即無法修改模擬器的物理尺寸和解析度)。

模擬器 System image 如果是 x86 的系統,則只支援 32 位應用的安裝和執行;如果是純 64 位的應用,模擬器需要選擇 arm64-v8a,否則無法安裝和執行應用。

Note:

1.Android Studio Foldable 模擬器無法修改物理尺寸、解析度和 DPI,因此在適配時,無法完全模擬 vivo 摺疊屏手機,在 App 或 activity resizeableActivity = true 時,為了驗證切屏是否有黑邊可以在 Android 原生模擬器檢視效果。

2. 64 位模擬器需要 PC 主機支援,部分 PC 無法正常啟動 64 位模擬器。

#03

摺疊屏展開態模擬器

Android 摺疊屏模擬器無法修改物理尺寸、解析度和 DPI。若應用在進行《2.2 不同解析度佈局適配》時需要 100% 模擬摺疊屏展開態的螢幕進行除錯,可以通過克隆 Tablet 分類的 Nexus 10,然後修改 vivo 摺疊屏手機對應的物理尺寸、解析度和 DPI 進行除錯和驗證。

Note:

1. 應用 UI 相容性適配對物理尺寸有強關聯時,請務必修改 Screen size 為 8.03,解析度是展開態解析度

2. 需確認 64 位模擬器是否可以執行需要 PC 主機支援

3. 若手機模擬 DPI 和解析度除錯無問題後,無法在模擬器執行,可以發包給 vivo 介面人,在 vivo 摺疊屏真機執行點檢

4. 模擬器無法修改 DPI,需要啟動模擬器後,通過 adb shell 命令設定

此時開啟終端,可以看到模擬器裝置已經掛載和連線,可以進行 adb 操作。

λadbdevicesListofdevicesattachedemulator-5554device

模擬器無法直接修改 DPI,需要啟動模擬器後單獨設定。

adbshellwmdensity480