華為折疊屏適配方案:華為在大屏設(shè)備上有系統(tǒng)級(jí)別的支持方案封拧,華為平行視界,能夠支持折疊屏分屏顯示
華為折疊屏分屏顯示效果
華為平行視界簡(jiǎn)介
平行視界是一種在平板夭问、折疊屏手機(jī)等大屏設(shè)備上對(duì)應(yīng)用進(jìn)行分屏展示的技術(shù)泽西。平行視界以 Activity 為基本單位,以左右窗口分離顯示技術(shù)缰趋、雙窗口生命周期管理捧杉、雙窗口顯示模式和切換邏輯為核心技術(shù)實(shí)現(xiàn)的應(yīng)用內(nèi)分屏的系統(tǒng)側(cè)解決方案。應(yīng)用可以根據(jù)自身的業(yè)務(wù)特點(diǎn)秘血,分屏顯示不同的 Activity 組合味抖,以實(shí)現(xiàn)符合應(yīng)用邏輯的最佳單應(yīng)用多窗口的用戶體驗(yàn)。
平行視界入口
手機(jī)系統(tǒng)設(shè)置-應(yīng)用-平行視界
支持平行視界的設(shè)備類型
華為折疊屏手機(jī)灰粮、華為平板M6系列及以上平板 (系統(tǒng)版本EMUI 10.X 及以上) 支持平行視界功能仔涩。
適配平行視界具體方法 (可脫離華為編譯器實(shí)現(xiàn)的方案)
第一步,在 AndroidManifest.xml 文件中添加
<meta-data android:name="EasyGoClient" android:value="true" />
第二步谋竖,在 assets 目錄下添加 easygo.json 配置文件
{
"easyGoVersion": "1.0",
"client": "應(yīng)用包名",
"logicEntities": [
{
"head": {
"function": "magicwindow",
"required": "true"
},
"body": {
"mode": "1",
"activityPairs": [
{
"from": "MainActivity", // 觸發(fā)分屏的源Activity红柱,不支持通配符
"to": "*" // 觸發(fā)分屏的目標(biāo)Activity承匣,支持通配符蓖乘,“*”表示任意Activity
},
{
// 主頁面Activity,可以有多個(gè)韧骗,分號(hào)隔開展開態(tài)時(shí)冷啟動(dòng)應(yīng)用打開此頁面時(shí)嘉抒,系統(tǒng)在右屏自動(dòng)啟動(dòng)relatedPage頁面
"mainPage": "MainActivity",
// 右屏默認(rèn)展示頁面Activity,mainPages和relatedPage只能配置1對(duì),需要具體的Activity名袍暴,不支持通配符
"relatedPage": "MagicWindowActivity"
}
],
"transActivities": [],
"UX": {
"isDraggable": "false", // true 為可以拖拽些侍,false 為不可拖拽
"showStatusBar": "true" // 是否顯示狀態(tài)欄
}
}
}
]
}
只要簡(jiǎn)單的兩步,就支持了平行視界政模,是不是非常的簡(jiǎn)單岗宣?
風(fēng)險(xiǎn)說明
- 只支持華為的部分設(shè)備,無法普及到一般的平板和折疊屏手機(jī)淋样;
- 需要用戶開啟平行視界功能耗式,才能使用;
- 目前僅支持二分屏幕的展示效果
- 目前只支持 Activity 為基本單位的分屏趁猴,不支持 Fragment 分屏顯示刊咳,對(duì)于單 Activity 多 Fragment 的應(yīng)用,想要支持平行視界儡司,只能將 Fragment 改造成 Activity
FAQ
Q: 修改 easygo.json 配置文件后娱挨,為什么新配置未生效?
A: 修改 easygo.json 配置文件后捕犬,需要升級(jí)應(yīng)用版本號(hào)或者卸載重新安裝跷坝,新配置才能生效酵镜。
參考:https://developer.huawei.com/consumer/cn/forum/topic/0201144059651060174?fid=3467
Q: 如何判斷設(shè)備是否為華為折疊屏?
A: 可根據(jù)手機(jī)系統(tǒng)屬性 "ro.config.hw_fold_disp" 判斷探孝,該屬性不為空則為華為折疊屏笋婿。
參考:https://developer.huawei.com/consumer/cn/forum/topic/0202567316824870264?fid=3467
Q: 如何判斷設(shè)備是否支持平行視界?
A: 可根據(jù)手機(jī)系統(tǒng)屬性 "ro.config.hw_magic_window_enable", 改屬性為 "true" 則支持華為平行視界顿颅。
參考:https://developer.huawei.com/consumer/cn/forum/topic/0202567316824870264?fid=3467
Q: 能否將應(yīng)用配置為默認(rèn)開啟平行視界缸濒?
A: 不能,部分頭部應(yīng)用能默認(rèn)開啟平行視界是因?yàn)楦A為簽了協(xié)議粱腻,華為將這些應(yīng)用添加進(jìn)白名單庇配。
參考:https://developer.huawei.com/consumer/cn/forum/topic/0204412700180730409?fid=3467
Q: 如何判斷應(yīng)用在平行視界下運(yùn)行?
A: 可用如下代碼判斷
private fun isInMagicWindow(): Boolean {
val ctx = context ?: return false
val configuration = ctx.resources.configuration.toString()
return configuration.contains("hwMultiwindow-magic") || configuration.contains("hw-magic-windows")
}
參考:https://developer.huawei.com/consumer/cn/forum/topic/0201296861975670023?fid=3467