如何更改Android N中多窗口显示的视图?如何检查应用程序是否在多窗口?

use*_*237 3 android android-intent android-activity android-n-preview android-7.0-nougat

我们如何为Multiple窗口提供单独的布局或单独的活动?

例如.我在android开发者网站的帮助下检查了下面的内容

<activity android:name="com.configure.it.MyScreen">
    <layout android:defaultHeight="400dp"
          android:defaultWidth="200dp"
          android:gravity="top|end"
          android:minimalSize="300dp" />
</activity>
Run Code Online (Sandbox Code Playgroud)

通过声明上面的内容,它会影响活动在多窗口模式下的行为方式.

但是,如果在Multiple-Window上激活我的特定屏幕,如何显示不同的布局?

use*_*237 5

来自Android Developer链接.

要在多窗口激活时使用UI或单独布局进行更改.

我们可以通过以下方式检查活动是否在多窗口中

  • 来自活动Activity.isInMultiWindowMode()调用以查明活动是否处于多窗口模式.

例如.要检查Activity是否多个窗口而不是标题(或任何视图应该具有红色背景颜色,如果它不在多个窗口中它应该是绿色背景颜色)

headerView.setBackgroundColor(inMultiWindow()?Color.RED:Color.GREEN);
Run Code Online (Sandbox Code Playgroud)

使用inMultiWindow()替换片段也是可能的

  • 获取多窗口激活的回调.

从Activity onMultiWindowChanged方法可以处理这个方法的运行时更改callback.System每当活动进入或退出多窗口模式时都会给这个方法boolean带回值.借助示例链接和android开发者链接

@Override
public void onMultiWindowChanged(boolean inMultiWindow) {
    super.onMultiWindowChanged(inMultiWindow);
    headerView.setBackgroundColor(inMultiWindow ? Color.RED : Color.GREEN);
    // here we can change entire fragment also.
    //If multiple window in than seperate and for multiple window out different

}
Run Code Online (Sandbox Code Playgroud)

如果我得到其他任何东西,将继续更新.