iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >浅谈 Android 7.0 多窗口分屏模式的实现
  • 302
分享到

浅谈 Android 7.0 多窗口分屏模式的实现

多窗口Android 2022-06-06 17:06:52 302人浏览 泡泡鱼
摘要

从 Android 7.0 开始,Google 推出了一个名为“多窗口模式”的新功能,也就是我们常说的“分屏模式”。那么,这个功能有什么用呢?作为开发者,我们又能做些什么? A

Android 7.0 开始,Google 推出了一个名为“多窗口模式”的新功能,也就是我们常说的“分屏模式”。那么,这个功能有什么用呢?作为开发者,我们又能做些什么?

Android 7.0 添加了对同时显示多个 APP 的支持。在手持设备上,两个 APP 可以在分屏模式下并排运行。

嗯,大概就是这样:

分屏模式的适配

我们如何才能让自己的 APP 支持分屏模式呢?

项目的 targetSDKVersion 大于等于24,那么可以在 AndroidManifest.xml 文件的 Application 或 Activity 节点通过设置 android:resizeableActivity=["true" | "false"] 来控制整个 APP 或某个 Activity 是否支持分屏。该属性的默认值是 true ,也就是说,如果不设置该属性,在支持分屏的设备上,默认是可以分屏的。

若项目的 targetSDKVersion 小于24,那么运行在支持分屏的设备上,默认可以分屏。这时如果需要禁止分屏,需要在 AndroidManifest.xml 文件的 Application 或 Activity 节点设置 android:screenOrientation 属性来控制整个 APP 或 某个 Activity 的屏幕方向,从而控制整个 APP 或某个 Activity 禁止分屏。

分屏模式的监听

能不能在代码中监听 APP 是否进入分屏模式呢?答案是能。由于 APP 在分屏模式发生改变时会执行 onMultiWindowModeChanged 方法,因此我们在 Activity 中重写这个方法就可以实现分屏的监听了。


@Override
 public void onMultiWindowModeChanged(boolean isInMultiWindowMode) {
  super.onMultiWindowModeChanged(isInMultiWindowMode);
  // 判断当前是否为分屏模式
  if (isInMultiWindowMode) {
   // 已进入分屏模式
  } else {
   // 未进入分屏模式
  }
 }

分屏模式下的生命周期

需要注意的是:进入和退出分屏模式时,Activity 的生命周期。

进入分屏模式时,Activity 的生命周期:

onPause()->onStop()->onMultiWindowModeChanged()->onDestroy()->onCreate()->onStart()->onResume()->onPause()

退出分屏模式时,Activity 的生命周期:

onStop()->onDestroy()->onCreate()->onStart()->onResume()->onPause()->onMultiWindowModeChanged()->onResume()

可以看出,在进入分屏模式时,Activity 先执行 

onMultiWindowModeChanged 
方法,再重建自己。在退出分屏模式时,Activity 先重建自己,再执行 
onMultiWindowModeChanged 
方法。

这样呢会有一个问题,我们的 APP 进入分屏模式时,在 

onMultiWindowModeChanged 
方法中如果有对 UI 等的操作,经过之后的自动重建就没有效果了。为了防止这种情况,需要在
 AndroidManifest.xml 
的 Activity 节点设置以下属性:


android:confiGChanges="screenSize|smallestScreenSize|screenLayout|orientation"

设置了这个属性,在进入分屏模式时,Activity 就不会自动重建了。

分屏模式的判断

我们可以通过 Activity 的 isInMultiWindowMode() 方法获取当前是否进入分屏模式,该方法返回 true 表示当前已进入分屏模式,返回 false 则表示当前未进入分屏模式。


if (isInMultiWindowMode()) {
  // 已进入分屏模式
 } else {
  // 未进入分屏模式
 }

分屏模式下打开 Activity

如果 APP 在分屏模式下打开 Activity 时,为 Intent 设置了 Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT 和 Intent.FLAG_ACTIVITY_NEW_TASK 标志,那么新打开的 Activity 将显示在当前 APP 的另一侧。例如下面的代码:


Intent intent = new Intent(this, NewActivity.class);
 intent.setFlags(Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT|Intent.FLAG_ACTIVITY_NEW_TASK);
 startActivity(intent);

如图,原始 Activity 分屏后显示在屏幕上半部分,新打开的 Activity 显示在原始 Activity 下方(屏幕的下半部分)。

到此这篇关于浅谈 Android 7.0 多窗口分屏模式的实现的文章就介绍到这了,更多相关Android7.0 多窗口分屏内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文章:Android分屏多窗口的实践代码


--结束END--

本文标题: 浅谈 Android 7.0 多窗口分屏模式的实现

本文链接: https://www.lsjlt.com/news/29911.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作