Android N 中推出了多窗口支持,项目要求适配多窗口模式,记录一下。
1.生命周期:对于完全没有适配多窗口的APP来说,当启用多窗口模式或者拖动窗口时,会出现Activity销毁重新加载的现象。 解决方法:在manifest文件里面给activity加上下面一行属性
android:cOnfigChanges="screenSize|smallestScreenSize|screenLayout|orientation"
2.当启用多窗口模式时,可能有改变原UI的需求,这时可以在代码里面修改:
@Override public void onMultiWindowModeChanged(boolean isInMultiWindowMode) { super.onMultiWindowModeChanged(isInMultiWindowMode); //在此处根据isInMultiWindowMode来适配多窗口UI }
onMultiWindowModeChanged在Activity,fragment里面都有,会在多窗口模式变化的时候调用该方法。不过注意了,当已经是多窗口模式时,进入新页面,并不会调用该方法。那怎么办呢?可以用下面这个方法来判断当前是否是多窗口状态,最低兼容SDK版本是24:
Activity().isInMultiWindowMode()
可以用Activity的这个方法判断。当是多窗口时隐藏或者显示某些布局。
3.如果要在拖动多窗口的过程中,动态改变布局,可以在manifest文件里面对相应的activity配置,例如:
然后在activity的布局文件里面,设置线性布局的layout_gravity和权重:
就会在拖动的过程中自动改变。这是Android官方的一个demo。
4.在拖动多窗口的过程中,也可以在代码里面动态设置,会调用onConfigurationChanged方法,在Configuration newConfig参数中有很多信息,就有当前应用的宽高信息。
@Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); int screenWidthDp=newConfig.screenWidthDp; int screenHeightDp=newConfig.screenHeightDp; //根据宽高动态改变布局 }
最后推荐:Android官方文档
以上所述是小编给大家介绍的Android分屏多窗口的实践代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!