如何为多Window模式配置应用程序?

How to Configuring App for Multi-Window Mode?

在 android Multi-Window 支持中,如何为 multi-window 模式配置应用程序?

manifest的activityapplication节点需要设置哪个属性为enable 禁用 多 window 显示?

为特定 activity(或整个应用程序)启用 multi-window 的最低要求是将 resizeableActivity=true 参数添加到 <activity>(或<application>) 标签。

这里是 Android Developers' Multi-Window Support 指南的概述:


如果您的应用面向 Android N,您可以配置应用的 Activity 如何以及是否支持多 window 显示。您可以在清单中设置属性来控制大小和布局。根 activity 的属性设置适用于其任务堆栈中的所有活动。例如,如果根 activity 将 android:resizeableActivity 设置为 true,则任务堆栈中的所有活动都可以调整大小。

Note: If you build a multi-orientation app with a version of the SDK lower than Android N, and the user uses the app in multi-window mode, the system forcibly resizes the app. The system presents a dialog box warning the user that the app may behave unexpectedly. The system does not resize fixed-orientation apps; if the user attempts to open a fixed-orientation app under multi-window mode, the app takes over the whole screen.

  • android:resizeableActivity

在清单的 activityapplication 节点中设置此属性以启用或禁用 multi-window显示:

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

如果此属性设置为 true,activity 可以在 分屏和自由格式模式 下启动。如果该属性设置为 false,则 activity 不支持 multi-window 模式 。如果此值为 false,并且用户尝试在多 window 模式下启动 activity,则 activity 会接管全屏。

如果您的应用面向 Android N,但您没有为此属性指定值,则该属性的值 defaultstrue.

  • android:支持画中画

在清单的 activity 节点中设置此属性以指示 activity 是否支持 画中画 显示。如果 android:resizeableActivityfalse.

,则忽略此属性
android:supportsPictureInPicture=["true" | "false"]

布局属性

使用 Android Nlayout 清单元素支持几个影响 activity 行为方式的属性在多 window 模式下:

  • android:defaultWidth

    在自由模式下启动时 activity 的默认 宽度

  • android:defaultHeight

    在自由模式下启动时 activity 的默认 高度

  • android:gravity

    在自由模式下启动时 activity 的初始位置。有关合适的值,请参阅 Gravity 参考。

  • android:minHeight, android:minWidth

    activity 在分屏和自由格式模式下的最小高度和最小宽度。如果用户在分屏模式下移动分隔线使 activity 小于指定的最小值,系统会将 activity 裁剪为用户请求的大小。

例如, 下面的代码显示了如何指定 activity 的默认大小和位置,以及它的最小大小,当 activity以自由形式显示:

<activity android:name=".MyActivity">
<layout android:defaultHeight="500dp"
      android:defaultWidth="600dp"
      android:gravity="top|end"
      android:minHeight="450dp"
      android:minWidth="300dp" />