安卓分屏模式的简单适配

  • Post author:
  • Post category:其他


Android N 添加了对同时显示多个应用窗口的支持。 手机上两个应用可以在“分屏”模式中左右并排或上下并排显示。



如何进入分屏模式

  • 打开App,长按底部Overview按键(底部的正方形按键)
  • 在多窗口任务页面,长按App,则可以拖动该 App至屏幕突出显示的区域,使 App 进入分屏模式。



开启分屏模式

App默认是支持分屏模式的。

如果App是基于Android N版本编译的,那么通过可以在manifest文件中设置Application或者Activity的属性

android:resizeableActivity=["true" | "false"]

。如果设置

resizeableActivity

属性为

true

则支持分屏模式,如果设置

resizeableActivity

属性为

false

则不支持分屏模式。

如果App的编译版本低于Android N, 那么当用户尝试进入分屏模式时候,系统会强制将App进入分屏模式。那么在这种情况下,在清单文件中的主Activity中设置

android:screenOrientation="portrait"

属性,就可以禁止进入分屏模式。



监听是否进入分屏模式

Activity 进入或退出分屏模式时系统将调用此方法。

@Override
public void onMultiWindowModeChanged(boolean isInMultiWindowMode) {
   super.onMultiWindowModeChanged(isInMultiWindowMode);
   Log.i(LOG_TAG,"onMultiWindowModeChanged isInMultiWindowsMode:"+isInMultiWindowMode);
}



进入分屏模式后的Activity的生命周期

  • 下面进入分屏模式后Activity的生命周期,从中可以看出当前Activity进行了销毁重建。
MainActivity: onMultiWindowModeChanged isInMultiWindowsMode:true
MainActivity: onPause
MainActivity: onStop
MainActivity: onDestroy
MainActivity: onCreate
MainActivity: onStart
MainActivity: onResume
MainActivity: onPause
  • 退出分屏模式的生命周期
MainActivity: onPause
MainActivity: onStop
MainActivity: onDestroy
MainActivity: onCreate
MainActivity: onStart
MainActivity: onResume
MainActivity: onPause
MainActivity: onMultiWindowModeChanged isInMultiWindowsMode:true



在分屏模式中打开新的Activity

在启动Activity的时候添加标志Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT,

如果此时App处于分屏模式,那么新Activity将会在当前Activity的旁边。

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



参考



版权声明:本文为wangkaishou原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。