android沉浸式模式

现在沉浸式模式运用越来越广泛,效果确实也挺不错美观,但是android在5.0之前是不支持沉浸式模式的,直到5.0后才加入沉浸式模式,所以特此记录下5.0以下和以上沉浸式模式的实现方式。(都是代码没用样式,代码扩展性强,易复用)
在5.0以下要实现沉浸式模式首选需要改变状态栏背景色

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

FLAG_TRANSLUCENT_STATUS就是将状态栏设置为半透明状态,效果如图
未使用之前效果:


使用之后
在这里插入图片描述
状态栏颜色已经变为透明
然后获取状态栏的高度

 private int getStatusBarHeight() {
        int result = 0;
        int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
        if (resourceId > 0) {
            result = getResources().getDimensionPixelSize(resourceId);
        }
        return result;
    }

getIdentifier方法文档有注释可以自己查看api的作用以及参数说明

然后在自己自定义一个view StatusBarView充当状态栏,这里状态栏颜色我是固定的

private StatusBarView createStatusBarView() {
        // 自定义一个view  充当状态栏
        StatusBarView statusBarView = new StatusBarView(this);
        LinearLayout.LayoutParams params =
                new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, getStatusBarHeight());
        statusBarView.setLayoutParams(params);
        statusBarView.setBackgroundColor(Color.parseColor("#D81B60"));
        return statusBarView;
    }

最后通过DecorView添加进去

 ViewGroup decorView = (ViewGroup) getWindow().getDecorView();//获取根布局
  decorView.addView(createStatusBarView());

效果如图在这里插入图片描述
当然在使用的时候 要加上版本号的判断

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP)

5.0以上的实现 就相对于简单多了
系统提供了setStatusBarColor可以设置状态栏颜色和setNavigationBarColor设置虚拟导航栏背景色

getWindow().setStatusBarColor(getResources().getColor(android.R.color.holo_red_light));
getWindow().setNavigationBarColor(getResources().getColor(android.R.color.holo_red_light));

这样就实现了状态栏颜色的改变
在6.0时又增加可以改变状态栏图标和文字颜色

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);

这样就实现了图标和文字变成浅黑色

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值