第一篇博客请多多担待,测试一下。
来自于https://developer.android.com/guide/topics/ui/multi-window.html#lifecycle
Android N 添加了同时显示多个应用窗口的支持,在手持设备上,两个应用可以在“分屏”模式中左右并排或者上下并排显示。在电视设备上,应用可以使用“画中画”模式,在用户与另一个应用交互的同时继续播放视频。
如果您使用N preview SDK构建应用,则可以配置应用处理多窗口显示的方法。 例如,您可以指定 Activity 的最小允许尺寸。 您还可以禁用应用的多窗口显示,确保系统仅以全屏模式显示应用。
概述
Android N允许多个应用同时共享屏幕的前提条件是你的手持设备支持分屏模式。
先看一下效果:
用户可以通过以下方式进入分屏模式:
点击右下角的任务管理,长按app,将其拖入提示的地方,这个App就进入了分屏模式。然后在任务管理器中选择另一个app,单击他进入。
分屏模式的生命周期:
首先声明:分屏模式不会改变Activity的生命周期。
在分屏模式中,用户最近操作过的Activity为活动状态,该Activity将被视为顶级的Activity,处于onResume状态,其他的处于onPause状态。
注:在多窗口模式中,用户仍可以看到处于暂停状态的应用。 应用在暂停状态下可能仍需要继续其操作。 例如,处于暂停模式但可见的视频播放应用应继续显示视频。 因此,我们建议播放视频的 Activity 不要暂停其 onPause() 处理程序中的视频。 应暂停 onStop() 中的视频,并恢复 onStart() 中的视频播放。
如处理运行时变更中所述,用户使用多窗口模式显示应用时,系统将通知 Activity 发生配置变更。 这也会发生在当用户调整应用大小,或将应用恢复到全屏模式时。 该变更与系统通知应用设备从纵向模式切换到横向模式时的 Activity 生命周期影响基本相同,但设备不仅仅是交换尺寸,而是会变更尺寸。 如处理运行时变更中所述,您的 Activity 可以自行处理配置变更,或允许系统销毁 Activity,并以新的尺寸重新创建该 Activity。
如果用户调整窗口大小,并在任意维度放大窗口尺寸,系统将调整 Activity 以匹配用户操作,同时根据需要发布运行时变更。 如果应用在新公开区域的绘制滞后,系统将使用 windowBackground 属性或默认 windowBackgroundFallback 样式属性指定的颜色暂时填充该区域
如何设置你的app进入分屏模式:
如果你是用Android N以及以上的SDK构建的应用,你可以对应用的 Activity 是否支持多窗口显示以及显示方式进行配置。在配置清单中的、节点中设置android:resizeableActivity=[“true”|”false”]该属性,如果为true,Activity 将能以分屏和自由形状模式启动;如果设为false,Activity将不支持多窗口模式。且用户尝试在多窗口模式下启动 Activity,该 Activity 将全屏显示。如果未指定该属性,默认为true。
如果你使用的是低于Android N版本的SDK,且app中没有设置android:screenOrientation这个属性,系统将强制调整应用的大小,会提醒用户可能会出现异常;但如果是定向应用,系统则不会调整应用的大小,会直接全屏显示。
布局属性
在Android N中,我们可以向manifest文件中添加layout节点,并设置一些新增加的属性,通过这些属性来设置分屏模式的一些行为,如最小尺寸等。
- android:defaultWidth
- android:defaultHeight
- android:gravity
- android:minimalSize
我们可以给一个Activity增加一个layout子节点:
<activity android:name=".MainActivity"
android:resizeableActivity="true">
<layout android:defaultHeight="300dp"
android:defaultWidth="600dp"
android:gravity="end|top"
android:minHeight="800dp"
android:minWidth="300dp" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
分屏模式下被禁用的功能:
- 某些系统 UI 自定义选项将被禁用;例如,在非全屏模 式中,应用无法隐藏状态栏。
- 系统将忽略对 android:screenOrientation 属性所作的更改。
分屏模式变更通知和查询:
Activity.isInMultiWindowMode():调用该方法以确认 Activity 是否处于多窗口模式。
Activity.onMultiWindowModeChanged():Activity 进入或退出多窗口模式时系统将调用此方法。 在 Activity 进入多窗口模式时,系统向该方法传递 true 值,在退出多窗口模式时,则传递 false 值。
分屏模式还能支持两个APP之间拖拽,具体请看官网的。
关于App分屏模式的学习就到这里了,欢迎大家一起交流