設(shè)置
  • 日夜間
    隨系統(tǒng)
    淺色
    深色
  • 主題色

vivo X Fold 折疊屏適配官方指南發(fā)布:應(yīng)用大小可調(diào)、不同分辨率布局、大屏體驗

2022/4/30 10:06:04 來源:IT之家 作者:瀟公子 責編:瀟公子

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

vivo 折疊屏有展開態(tài)和折疊態(tài),這兩種狀態(tài)下屏幕的分辨率是不同的。因此,在折疊屏狀態(tài)切換時,分辨率也要動態(tài)切換。

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

展開態(tài) ▼

折疊態(tài) ▼

適配建議

#01

讓應(yīng)用大小可調(diào)

為了加強用戶體驗,折疊屏在展開態(tài)和折疊態(tài)動態(tài)切換時,應(yīng)用界面不允許存在左右黑邊或下半屏黑邊的情況(即應(yīng)用進入兼容模式),因此需要應(yīng)用支持不同分辨率情況下頁面大小可調(diào)。

此功能由 android:resizeableActivity 屬性控制,在應(yīng)用的 AndroidManifest.xml 中可以針對 App 或 activity 進行設(shè)置。

<application
    android:resizeableActivity="true">

    <activity
          android:resizeableActivity="true" />
</application>

Note:

1. 當應(yīng)用的 targetSdkVersion >=24 時,android 系統(tǒng)默認設(shè)置 android:resizeableActivity="true",不需要應(yīng)用聲明即可支持應(yīng)用大小可調(diào)。當應(yīng)用的 targetSdkVersion < 24 時,需要應(yīng)用針對 application 或 activity 設(shè)置 android:resizeableActivity="true"。

2. application android:resizeableActivity="true" 時,會針對 App 的所有 activity 生效,因此當應(yīng)用只需要聲明單獨的 activity 時,可以只針對單個 activity 進行設(shè)置。

系統(tǒng)側(cè)建議:針對 application 設(shè)置 android:resizeableActivity="true",避免應(yīng)用部分頁面在折疊屏狀態(tài)變化后存在黑邊問題。

其他適配事項可以參考 Android 開發(fā)者適配指導(dǎo) (例如鏈接中提到的保存界面狀態(tài)和支持配置變更部分):

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

3.設(shè)置 android:resizeableActivity="true" 后,應(yīng)用即可進入分屏模式,若不想進入分屏模式(進入分屏模式后會有一些適配問題)又不被當做兼容模式,可以在 Activity 里加上如下代碼:

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

#02

不同分辨率布局適配

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

詳細適配方法可參考以下鏈接:

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

#03

適配大屏體驗

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

因此,開發(fā)者們需要有效利用大屏空間調(diào)整布局展示,顯示更多的內(nèi)容。

要解決此類顯示問題,開發(fā)者們可以在 AndroidManifest.xml android:configChanges 中聲明 "screenSize" 變化,然后在 onConfigurationChanged 中動態(tài)調(diào)整布局。

詳細適配方法可以參考以下鏈接:

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

#04

判定折疊屏方法

運行時判斷:

android.util.FtDeviceInfo

public static String getDeviceType  

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

開發(fā)者可以通過反射的方式獲取設(shè)備類型,返回值 foldable 表示折疊屏設(shè)備。

反射代碼示例:

private static boolean isVivoFoldableDevice(){
    try {
        Class<?>  c= 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

機型配置

若應(yīng)用已經(jīng)針對其他廠家折疊屏設(shè)備進行了適配,新的折疊屏設(shè)備根據(jù)機型名配置即可生效,可直接配置 vivo 折疊屏 model 型號 V2178A。

調(diào)試和驗證

#01

手機調(diào)試

DPI 設(shè)置:adb shell wm density 480

展開態(tài):adb shell wm size 1916x2160

折疊態(tài):adb shell wm size 1080x2520

Note:

1. 折疊屏展開態(tài)和折疊態(tài) DPI 一樣都是 480,只需要設(shè)置一次

2. 展開態(tài)和折疊態(tài)進行切換時,可以通過設(shè)置不同的分辨率來進行模擬切換

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

4. DPI 和分辨率設(shè)置后,重啟手機設(shè)置不會發(fā)生變化,若需要調(diào)回手機默認值,可通過 adb shell wm size reset 和 adb shell wm density reset 進行恢復(fù)

5. 由于 Android 模擬器調(diào)試效率問題,推薦用手機模擬調(diào)試和驗證;若需要 100% 還原真機物理尺寸,可考慮模擬器

#02

模擬器調(diào)試

除了通過手機動態(tài)切換分辨率的方式來進行調(diào)試外,還可通過模擬器進行調(diào)試和驗證。Android Studio 模擬器 Phone 分類支持 8 英寸和 7.3 英寸的折疊屏調(diào)試,但是無法克?。礋o法修改模擬器的物理尺寸和分辨率)。

模擬器 System image 如果是 x86 的系統(tǒng),則只支持 32 位應(yīng)用的安裝和運行;如果是純 64 位的應(yīng)用,模擬器需要選擇 arm64-v8a,否則無法安裝和運行應(yīng)用。

Note:

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

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

#03

折疊屏展開態(tài)模擬器

Android 折疊屏模擬器無法修改物理尺寸、分辨率和 DPI。若應(yīng)用在進行《2.2 不同分辨率布局適配》時需要 100% 模擬折疊屏展開態(tài)的屏幕進行調(diào)試,可以通過克隆 Tablet 分類的 Nexus 10,然后修改 vivo 折疊屏手機對應(yīng)的物理尺寸、分辨率和 DPI 進行調(diào)試和驗證。

Note:

1. 應(yīng)用 UI 兼容性適配對物理尺寸有強關(guān)聯(lián)時,請務(wù)必修改 Screen size 為 8.03,分辨率是展開態(tài)分辨率

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

3. 若手機模擬 DPI 和分辨率調(diào)試無問題后,無法在模擬器運行,可以發(fā)包給 vivo 接口人,在 vivo 折疊屏真機運行點檢

4. 模擬器無法修改 DPI,需要啟動模擬器后,通過 adb shell 命令設(shè)置

此時打開終端,可以看到模擬器設(shè)備已經(jīng)掛載和連接,可以進行 adb 操作。

λ adb devices
List of devices attached
emulator-5554   device

模擬器無法直接修改 DPI,需要啟動模擬器后單獨設(shè)置。

adb shell wm density 480

廣告聲明:文內(nèi)含有的對外跳轉(zhuǎn)鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時間,結(jié)果僅供參考,IT之家所有文章均包含本聲明。

相關(guān)文章

關(guān)鍵詞:vivo X Fold折疊屏

軟媒旗下網(wǎng)站: IT之家 最會買 - 返利返現(xiàn)優(yōu)惠券 iPhone之家 Win7之家 Win10之家 Win11之家

軟媒旗下軟件: 軟媒手機APP應(yīng)用 魔方 最會買 要知