因为现在有好多折叠屏手机手机厂商推出了品行视界,也就是左右分屏在左面屏幕不发生改变的情况下降下一个页面放到有面可以左右一起看,在我们点击有面页面的时候有面的首个页面就回跑到左面,右面的第二个页面就有在右面
其实适配很简单首先在清单文件添加
<meta-data
android:name="EasyGoClient"
android:value="true" />
然后如果有播放器的可以看需求添加这个这个厂商官方的说明是
magicWindow双窗口状态下,右边Top Activity始终为resumed状态,左边Top Activity为resumed或者paused状态,系统默认应用支持multi-resume,如果应用希望不支持multi-resume,可以在应用AndroidManifest.xml中增加meta-data字段来关闭:说明: multi-resume关闭后,应用在其它多窗口状态下也不会再支持multi-resume子特性,同时可能存在Activity失去焦点后音视频播放停止的问题,所以建议应用在关闭multi-resume后,在Activity的onStop而不是onPause中停止音视频的播放。
(1)支持左右两个窗口同时播放,用户主动点击播放/暂停按钮可以控制任意一个窗口的音视频播放状态。
(2)避免左右两个窗口共用一个播放器。左右两个窗口同时显示,建议两边使用的播放器资源相互独立,互不影响。
但是这个字段我没有用
<meta-data
android:name="android.allow_multiple_resumed_activities"
android:value="true" />
然后就是添加“easygo.json”配置文件注意格式一定要正确不然系统设置页面没有你的应用
那么格式是什么呢?重点来了
我的demo上是这么写的
{
"easyGoVersion": "1.0",
"client": "com.wd.pxwindows",
"logicEntities": [
{
"head": {
"function": "magicwindow",
"required": "true"
},
"body": {
"mode": "1",
"activityPairs": [
{
"from": "com.wd.pxwindows.MainActivity",
"to": "*"
},
{
"from": "com.wd.pxwindows.MainActivityA",
"to": "*"
},
],
"Activities": [
{
"name": "com.wd.pxwindows.MainActivityA",
"defaultFullScreen": "true"
},
{
"name": "com.wd.pxwindows.MainActivityA",
"defaultFullScreen": "true"
}
],
"transActivities": ["com.wd.pxwindows.MainActivityA"],
"UX": {
"supportRotationUxCompat": "true",
"isDraggable": "true"
}
}
}
]
}
我解释一下哈
*easyGoVersion 为版本一般为1.0你改成1.1也不会报错
client 为你的包名 记住这个一定不要错错了系统设置页面没有你的应用
logicEntities 是调用组件名里面包含很多 可以看上面代码格式包含内容我就不多说了
activityPairs 里面是你的页面设置
from 为当前页面 to为开启后打开的页面可以为真实页面也可以为”to”: “” 格式如上
Activities为启动默认打开首页双屏
UX里面就是supportRotationUxCompat 是否开启窗口缩放isDraggable是否支持分屏窗口 拖动常用的基本就这些
**
然后接下来就是代码阶段获取系统信息判断是否是品行视界状态来进行对应的操作
@Override
protected void onResume() {
super.onResume();
String config = this.getResources().getConfiguration().toString();
boolean isInMagicWindow = config.contains("hwMultiwindow-magic");
}
然后就是页面跳转(平行)
直接intent就行
Intent intent = new Intent(MainActivity.this,MainActivityA.class);
startActivity(intent);
2023.0216更新
目前华为easygo点击分屏是A上启动B,触发分屏(A左B右)然后如果想让B右A左那就是在B面为基础增加下面的代码然后需要有一个页面C在能实现这个效果 这个相当于一个推导的过程
{
"from": "com.wd.pxwindows.MainActivityB",
"to": "*"
},
{
"from": "com.wd.pxwindows.MainActivityC",
"to": "*"
},
2023.0221更新
最近遇到折叠屏判断是否在折叠态或者展开态,那这个有两种方式一种是根据屏幕的宽高比来判断当前是什么状态首先获取屏幕的DisplayMetrics对象,然后计算屏幕高度和宽度的比例。最后,如果比例小于1.2,则返回true,否则返回false
public static boolean isDeviceFolded(Context context) {
DisplayMetrics metrics = new DisplayMetrics();
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
if (wm != null) {
Display display = wm.getDefaultDisplay();
display.getMetrics(metrics);
// 计算屏幕高度和宽度的比例
float ratio = (float) metrics.heightPixels / (float) metrics.widthPixels;
// 如果比例小于某个阈值,则表示设备处于折叠态
if (ratio < 1.2) {
return true;
}
}
return false;
}
还有一种是基于Android12LJetpack WindowManager来进行适配的方案
详见下方谷歌文档 可以判断悬浮,折叠态,展开态等
https://developer.android.com/guide/topics/large-screens/make-apps-fold-aware?hl=zh-cn
2023.1030更新
onConfigurationChanged 不生效在折叠或者分屏的时候这个方法不回调原因是没有加(要加全)
android:configChanges="keyboardHidden|orientation|fontScale|locale|screenSize|smallestScreenSize|screenLayout"
今天的文章华为平行视界左右互换_华为手机分屏怎么关闭「建议收藏」分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/63825.html