美文网首页
android 沉浸式状态栏

android 沉浸式状态栏

作者: 汤姆船长_bdf2 | 来源:发表于2018-04-19 11:13 被阅读0次

    方案:全屏模式的延伸

    通过设置 FLAG ,让应用内容占用系统状态栏的空间,经测试该方式不会影响对导航栏的设置。

    /**
     * 通过设置全屏,设置状态栏透明
     *
     * @param activity
     */
    private void fullScreen(Activity activity) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                //5.x开始需要把颜色设置透明,否则导航栏会呈现系统默认的浅灰色
                Window window = activity.getWindow();
                View decorView = window.getDecorView();
                //两个 flag 要结合使用,表示让应用的主体内容占用系统状态栏的空间
                int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
                decorView.setSystemUiVisibility(option);
                window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
                window.setStatusBarColor(Color.TRANSPARENT);
                //导航栏颜色也可以正常设置
    //                window.setNavigationBarColor(Color.TRANSPARENT);
            } else {
                Window window = activity.getWindow();
                WindowManager.LayoutParams attributes = window.getAttributes();
                int flagTranslucentStatus = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
                int flagTranslucentNavigation = WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION;
                attributes.flags |= flagTranslucentStatus;
    //                attributes.flags |= flagTranslucentNavigation;
                window.setAttributes(attributes);
            }
        }
    }
    

    在该页面application中的onCreate方法中调用

           //隐藏自带的title
            ActionBar actionBar=getSupportActionBar();
            if(actionBar!=null){
                actionBar.hide();
            }
           //调用该方法 
           fullScreen(this);
    

    效果如下:

    1524107182606.jpg 1524107187390.jpg

    相关文章

      网友评论

          本文标题:android 沉浸式状态栏

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