【问题标题】:How to change view for multiple window display in Android N? How to check application is in multiwindow or not?如何在 Android N 中更改多窗口显示的视图?如何检查应用程序是否在多窗口中?
【发布时间】:2016-07-06 01:03:33
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: android android-intent android-activity android-7.0-nougat android-n-preview


    【解决方案1】:

    isInMultiWindowMode() 在 API 24 中添加,用于检查设备是否处于多窗口模式,它返回一个布尔值。每当设备进入多窗口模式时,它都会触发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{
    
          }
    }
    

    在 Manifest.xml 中

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

    如需进一步参考,请与Multi-Window Support Google DevMultiWindow Medium Corp 联系

    【讨论】:

      【解决方案2】:

      来自Android Developer link

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

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

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

      例如。检查 Activity 是否比标题多窗口(或者任何视图如果不在多窗口中,则应具有红色背景色,则应为绿色背景色)

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

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

      • 获取多窗口激活回调。

      From Activity onMultiWindowChanged 方法可用于处理此方法回调的运行时更改。只要活动进入或退出具有boolean 值的多窗口模式,系统将对此方法进行回调。在@的帮助下987654322@ & 安卓开发者链接

      @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
      
      }
      

      如果我有其他东西会继续更新。

      【讨论】:

      • 这个函数的新名字是isInMultiWindowMode()
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-30
      • 1970-01-01
      • 1970-01-01
      • 2019-03-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多