列表中视频全屏/非全屏切换时,需要动态显示/隐藏状态栏
View类提供了setSystemUiVisibility和getSystemUiVisibility方法,这两个方法实现对状态栏的动态显示或隐藏的操作,以及获取状态栏当前可见性(参考blog:https://blog.youkuaiyun.com/stevenhu_223/article/details/12428591)懒得多谢,直接引用了,大家有兴趣可以了解一下
我一开始全屏使用的是以下两种切换方式:
1、切换到全屏时:setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);//全屏隐藏状态栏
2、切换到非全屏:setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);//非全屏,切换到普通状态
这两段代码,如果是沉浸式状态栏,是没有任何问题的,但是我的首页不能使用沉浸式,而且状态栏设置了白底黑字样式(主要原因应该是这个)所以在使用这种方式的时候,居然出现了问题!!!!兼容性,真的非常脑袋疼,其它手机都没问题,魅族Flyme系统和华为荣耀手机全屏后状态栏依然显示,所以不得不在首页换种方式解决
后来想到,setSystemUiVisibility其实都是View级别的,但是android中关于界面最底层其实是Window,所以想到用Window的setFlags方式,最终问题解决,解决代码如下:
1、切换到全屏时:
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);2、切换到非全屏:
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
最终问题兼容性迎刃而解,在处理UI,尤其是系统状态栏、Theme等,兼容性是最大的问题,希望与小伙伴们共勉