RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:8:30-17:00
你可能遇到了下面的问题
关闭右侧工具栏

新闻中心

这里有您想知道的互联网营销解决方案
怎么在Android7.0中实现一个多窗口分屏模式

本篇文章给大家分享的是有关怎么在 Android 7.0中实现一个多窗口分屏模式,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

长治网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设公司等网站项目制作,到程序开发,运营维护。创新互联从2013年开始到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。

分屏模式的适配

若项目的 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);

以上就是怎么在 Android 7.0中实现一个多窗口分屏模式,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。


文章名称:怎么在Android7.0中实现一个多窗口分屏模式
本文网址:http://lswzjz.com/article/jcdsge.html