我们如何为多个窗口提供单独的布局或单独的活动?
例如。我已经在安卓开发者网站的帮助下检查了下面的东西
<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