博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android分屏多窗口实践
阅读量:6843 次
发布时间:2019-06-26

本文共 1248 字,大约阅读时间需要 4 分钟。

hot3.png

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;       //根据宽高动态改变布局	}

最后推荐:

转载于:https://my.oschina.net/u/2606060/blog/821428

你可能感兴趣的文章