Android 华为平行视界适配(左右分屏)判断悬浮,展开,折叠 您所在的位置:网站首页 华为平板如何退出分屏 Android 华为平行视界适配(左右分屏)判断悬浮,展开,折叠

Android 华为平行视界适配(左右分屏)判断悬浮,展开,折叠

2023-11-13 05:09| 来源: 网络整理| 查看: 265

因为现在有好多折叠屏手机手机厂商推出了品行视界,也就是左右分屏在左面屏幕不发生改变的情况下降下一个页面放到有面可以左右一起看,在我们点击有面页面的时候有面的首个页面就回跑到左面,右面的第二个页面就有在右面效果图 其实适配很简单首先在清单文件添加

然后如果有播放器的可以看需求添加这个这个厂商官方的说明是 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)避免左右两个窗口共用一个播放器。左右两个窗口同时显示,建议两边使用的播放器资源相互独立,互不影响。 但是这个字段我没有用

然后就是添加“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"


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有