多窗口模式(multi-window mode):是android7.0(API24)添加的,可以有分屏模式(split-screen mode),画中画模式( Picture-in-Picture mode),自由模式( freeform mode用户自动调整activity的大小)
1.进入多窗口模式的方法有两种:
- 在最近打开窗口( Overview screen)中,长按activity的title,并将其拖拽到上方高亮的区域即可进入分屏模式
- 在打开的窗口长按OverViewButton,也可以进入分屏模式
通过拉动分屏线可以改变两边屏幕的大小比例(若拉动后,activity的显示大小小于activity设置的最小尺寸比例将不会改变)
在分屏模式下,不会改变activity的生命周期,用户最近一次互动的那个activity为resume状态,其他可见的activity为pause状态
2.设置自己的app是否支持多窗口模式
在 backstack的root activity(root设置了属性,其他activity也同时拥有了这个属性)中设置manifest属性android:resizeableActivity="false"
(false为不支持分屏模式或自由窗口模式,true为支持(默认为true)),android:supportsPictureInPicture=["true" | "false"]
为是否支持画中画模式(前提是resizeableActivity=true)
3.设置自己的app支持多窗口模式下的尺寸范围大小
在BackStack的RootActivity的manifest中设置
<activity android:name=".MyActivity">
<layout android:defaultHeight="500dp"//自由模式时的默认高度
android:defaultWidth="600dp"//自由模式时的默认宽度
android:gravity="top|end"//自由模式时的重心位置
android:minHeight="450dp"//分屏模式或自由模式时的最小高度
android:minWidth="300dp" />//分屏模式或自由模式时的最小高度
</activity>
4.多窗口模式下失效的属性
android:screenOrientation
多窗口模式下设置activity屏幕的方向没有效果
5.判断activity是否为多窗口模式的方法
isInMultiWindowMode()
判断activity是否处于多窗口模式
isInPictureInPictureMode()
判断activity是否处于画中画模式(若为true,则isInMultiWindowMode()也一定为true)
onMultiWindowModeChanged()
当activity进入或退出多窗口模式时系统回调此方法
onPictureInPictureModeChanged()
当activity进入或退出画中画模式时系统回调此方法