近期项目上提了一个需求,要在平板横屏状态下分屏显示内容,且分屏界面为同一应用界面。在查阅了大量文档后,确认这是华为实现的一种分屏方案叫做平行视界。
平行视界,是华为首创的应用内分屏功能,已经在华为平板M6与华为MatePad Pro上发布。和安卓系统分屏提供是两个应用间的分屏不同的是,它提供应用内两个窗口可以在屏幕上左右同时显示的功能,从而使安卓平板的使用体验有了革命性突破。
平行视界的核心技术主要分为:双窗口分离显示技术、双窗口生命周期管理、双窗口显示模式。
由于只有一台小米平板做为测试设备,开始还在担心如何测试,后来发现按照华为平行视界的适配方案在小米设备一样生效。推测厂商在这方面的实现无差异。
一,AndroidManifest.xml
application节点内添加即可
<meta-data
android:name="EasyGoClient"
android:value="true"/>
<meta-data
android:name="android.allow_multiple_resumed_activities"
android:value="true"/>
二,easygo.json
工程目录下新增配置文件
此文件内容非常重要,由于网上说明文档非常少,在多次实验验证后得到以下配置内容,可实现横屏进入主界面,跳转新界面时分屏显示。
{
"easyGoVersion": "1.0",
"client": "com.test.AndroidBeta",
"logicEntities": [
{
"head": {
"function": "magicwindow",
"required": "true"
},
"body": {
"mode": "1",
"activityPairs": [
{
"from": "com.test.Android.AndroidActivity",
"to": "*"
}
],
"Activities": [
{
"name": "com.test.Android.AndroidActivity",
"defaultFullScreen": "false"
},
{
"name": "com.test.Android.SecondActivity",
"defaultFullScreen": "false"
}
],
"UX": {
"supportRotationUxCompat": "true",
"isDraggable": "true",
"supportDraggingToFullScreen": "PAD"
}
}
}
]
}
判断当前处于平行视界
/**
* 判断是否处于平行视界
* @return true/false
*/
protected boolean isInMagicWindow(){
String config = this.getResources().getConfiguration().toString();
return config.contains("hwMultiwindow-magic") || config.contains("miui-magic-windows");
}
更正一下判断平行视界的方式,早期判断小米平板是可以的,后来小米应该是换了方案,华为的那套不行了。现在这个适配方案只适用于华为设备。
public boolean isInMagicWindow(){
String config = mContext.getResources().getConfiguration().toString();
return config.contains("hw-magic-windows");
}
华为官方文档:文档中心