安卓分屏模式的简单适配

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);

参考

  • 多窗口支持
  • 是时候学习多分屏了
  • Android N App分屏模式完全解析(上)
  • Android N App分屏模式完全解析(下)
  • Android-7分屏体验,代码上手初见

你可能感兴趣的:(Android基础)