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



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

例如。我已经在安卓开发者网站的帮助下检查了下面的东西

<activity android:name="com.configure.it.MyScreen">
    <layout android:defaultHeight="400dp"
          android:defaultWidth="200dp"
          android:gravity="top|end"
          android:minimalSize="300dp" />
</activity>

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

但是,如果我的特定屏幕在多窗口上激活,我如何显示不同的布局?

来自 Android 开发者链接 。

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

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

  • 从活动Activity.isInMultiWindowMode()调用以了解活动是否处于多窗口模式。

例如。检查活动,如果它的多个窗口比标题(或任何视图应该有红色背景色,如果它不在多个窗口中,它应该是绿色背景色)

headerView.setBackgroundColor(inMultiWindow()?Color.RED:Color.GREEN);

也可以使用inMultiWindow()替换片段

  • 获取多窗口激活时的回调。

从活动onMultiWindowChanged方法可用于处理此方法回调的运行时更改。每当活动进入或退出具有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
}

如果我得到任何其他内容,将继续更新。

API 24中添加了isInMultiWindowMode()以检查设备是否处于多窗口模式,它返回一个布尔值。 每当设备进入多窗口模式时,它都会触发onConfigurationChanged()方法。

您需要在基于横向和纵向模式的onConfigurationChanged()中手动更新视图,重新加载资源等

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
     if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE)
      {
        //do something (Update your views / Reload resources)
      }else{
      }
}

在清单中.xml

 <activity
   android:name=".yourActivity"
   android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"
 />

如需进一步参考,请查看多窗口支持 Google Dev 和 MultiWindow Medium Corp

最新更新