Android_多窗口
16lz
2021-01-26
分屏
app默认允许分屏
禁用分屏:
- 在AndroidManifest的Application节点添加属性
android:resizeableActivity="false"
- activity节点的screenOrientation也会禁用,该属性值太多没有一一测试,可以肯定的是常用的portrait和landscape会把分屏禁用
android:screenOrientation="portrait"
在进入分屏和退出分屏模式,activity默认会重启
禁止activity重启:
- 有人说是activity的configChanges属性值设为“screenLayout|orientation”,但是该方法我测试没有效果
- 实测有效的是将值设为:“screenSize|smallestScreenSize|screenLayout|orientation”
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"
判断是否是分屏:isInMultiWindowMode(),true为分屏模式
进入和退出分屏回调函数:onMultiWindowModeChanged(boolean isInMultiWindowMode)
下面给出分屏的生命周期:
在未禁用分屏时
- 切换至多任务页面:onPause----》onSaveInstanceState—》onStop
- 进入分屏:onDestroy----》onCreate—》onStart–》onRestoreInstanceState----》onResume—》onPause----》onMultiWindowModeChanged----》onResume
- 来回操作自测app和其他app:onPause ----》onResume 无限循环
- 退出分屏:onPause—》onSaveInstanceState—》onStop–》onDestroy–》onCreate–》onStart—》onRestoreInstanceState----》onResume—》onConfigurationChanged–》onMultiWindowModeChanged—》onPause–》onSaveInstanceState–》onStop
禁用分屏后:(前面都一样)
- 进入分屏:onConfigurationChanged–》onStart–》onMultiWindowModeChanged–》onResume
- 退出分屏:onConfigurationChanged–》onConfigurationChanged—》onMultiWindowModeChanged
补充说明:在测试的时候发现小米手机分屏和其他手机分屏实现不一样
- 进入分屏后,来回操作上面两个app,自测的app会不断的调用onPause和onResume方法,但是小米不会
- 在分屏之间写代码没有严格区分onStart、onResume方法和onPause、onstop方法,但是如果应用需要支持分屏就要注意了,多数手机分屏模式操作上下两个app是onPause和onResume之间来回调用的,所以例如视频暂停等问题应该把暂停放stop里面(小米应该无所谓)
- 分屏后的app占用屏幕的宽高是可调节的,所以横竖屏是非绝对。如果通过screenOrientation来强制横屏或者竖屏,这样会把分屏也禁掉,所以如果你的哪个页面需要强制横屏(竖屏)展示,可以通过在代码中控制,在onCreate中添加,或者在BaseActivity中添加:
强制横屏:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
强制竖屏:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
更多相关文章
- 移动接口开发:JAVA判断是android还是ios 端请求
- Android中的EditText默认时不弹出软键盘的方法
- android studio 连接真机测试 小米8
- Ubuntu 13.04 小米2S连接Eclipse真机调试
- camp
- 【幻灯片分享】Android程序的编译,安装和运行 | 小米科技 汪文俊
- Android之仿小米便签程序
- 如何在android上去控制开发进度
- Android实现多条Toast快速显示(强制中止上一条Toast的显示)