美文网首页
沉浸式状态栏相关

沉浸式状态栏相关

作者: 美男子_杰琳塔 | 来源:发表于2017-10-10 14:41 被阅读0次

    //4.4及以上状态栏全透明实现(在onCreate的setContentView前)

    if(Build.VERSION.SDK_INT>= Build.VERSION_CODES.LOLLIPOP) {//5.0及以上

    Window window = getWindow();

    window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

    window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN| View.SYSTEM_UI_FLAG_LAYOUT_STABLE);

    window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);

    window.setStatusBarColor(Color.TRANSPARENT);

    }else if(Build.VERSION.SDK_INT>= Build.VERSION_CODES.KITKAT) {//4.4到5.0

    getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

    }

    还有一种方式是给activity或者application设置theme,创建不同的values文件,也可以做到不同系统版本的适配。设置windowTranslucentStatus为true将将页面内容也填充顶部的状态栏区域。

    (有虚拟按键的设备上(大部分华为))设置windowTranslucentNavigation为true将将页面内容也填充底部导航栏的区域,不介意使用。因为一般app都会有底部导航,会导致系统和应用导航重叠。

    如果仅仅想扩展背景样式到系统栏下,在页面布局的根布局设置android:fitsSystemWindows="true"

    使用指定theme这种方式的弊端是有部分相同Android系统版本但不同厂家rom的手机,打开app状态栏会出现不同,有的是全透有的是半透明。

    最靠谱是用代码结合设置fitsSystemWindows来实现。

    还有就是使用沉浸状态栏且又有侧滑关闭页面的转场动画时,遇到了二级页面不能将页面内容填充到状态栏的问题,可能是因为添加进出场动画会需要将activity的背景设置为透明,因为都是没有需求随便加在项目里试的所以没有继续寻找解决方案。

    相关文章

      网友评论

          本文标题:沉浸式状态栏相关

          本文链接:https://www.haomeiwen.com/subject/djivyxtx.html