天天看點

vivo X Fold折疊屏适配官方指南釋出

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

vivo X Fold折疊屏适配官方指南釋出

vivo 折疊屏有展開态和折疊态,這兩種狀态下螢幕的分辨率是不同的。是以,在折疊屏狀态切換時,分辨率也要動态切換。

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

展開态 ▼

vivo X Fold折疊屏适配官方指南釋出

折疊态 ▼

vivo X Fold折疊屏适配官方指南釋出

适配建議

#01

讓應用大小可調

為了加強使用者體驗,折疊屏在展開态和折疊态動态切換時,應用界面不允許存在左右黑邊或下半屏黑邊的情況(即應用進入相容模式),是以需要應用支援不同分辨率情況下頁面大小可調。

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

Note:

1. 當應用的 targetSdkVersion >=24 時,android 系統預設設定 android:resizeableActivity="true",不需要應用聲明即可支援應用大小可調。當應用的 targetSdkVersion

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 裡加上如下代碼:

#02

不同分辨率布局适配

折疊屏涉及到不同的分辨率尺寸和 DPI,應用界面除了要保證分辨率切換時無黑邊問題外,還需要保證應用界面在不同分辨率顯示時頁面無明顯的拉伸、錯位和重疊等問題,是以需要優化布局和提供對應的位圖來進行适配。

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

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

#03

适配大屏體驗

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

是以,開發者們需要有效利用大屏空間調整布局展示,顯示更多的内容。

vivo X Fold折疊屏适配官方指南釋出

要解決此類顯示問題,開發者們可以在 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 表示折疊屏裝置。

反射代碼示例:

private static boolean isVivoFoldableDevice(){ try { Classc= Class.forName("android.util.FtDeviceInfo"); Method m = c.getMethod("getDeviceType"); Object dType = m.invoke(c); Log.d("fold","getDeviceType="+dType); return "foldable".equals(dType); } catch (Exception e) { e.printStackTrace(); } return false;}

#05

機型配置

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

調試和驗證

#01

手機調試

DPI 設定:adb shell 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,否則無法安裝和運作應用。

vivo X Fold折疊屏适配官方指南釋出

Note:

1. Android Studio Foldable 模拟器無法修改實體尺寸、分辨率和 DPI,是以在适配時,無法完全模拟 vivo 折疊屏手機,在 App 或 activity resizeableActivity = true 時,為了驗證切屏是否有黑邊可以在 Android 原生模拟器檢視效果。

vivo X Fold折疊屏适配官方指南釋出

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

#03

折疊屏展開态模拟器

Android 折疊屏模拟器無法修改實體尺寸、分辨率和 DPI。若應用在進行《2.2 不同分辨率布局适配》時需要 100% 模拟折疊屏展開态的螢幕進行調試,可以通過克隆 Tablet 分類的 Nexus 10,然後修改 vivo 折疊屏手機對應的實體尺寸、分辨率和 DPI 進行調試和驗證。

vivo X Fold折疊屏适配官方指南釋出

Note:

1. 應用 UI 相容性适配對實體尺寸有強關聯時,請務必修改 Screen size 為 8.03,分辨率是展開态分辨率

2. 需确認 64 位模拟器是否可以運作需要 PC 主機支援

3. 若手機模拟 DPI 和分辨率調試無問題後,無法在模拟器運作,可以發包給 vivo 接口人,在 vivo 折疊屏真機運作點檢

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

此時打開終端,可以看到模拟器裝置已經挂載和連接配接,可以進行 adb 操作。

λ adb devicesList of devices attachedemulator-5554 device

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

adb shell wm density 480

繼續閱讀