沉浸式状态栏适配不同的版本

   上次说过有时间将会写一遍关于沉浸式状态栏的文章,关于沉浸式状态栏对于有实际开发经验的程序员来说应该不会陌生,在实际app开发中这需求十分的遍布,但是能用好也是对app功能效果上的一种提升.那现在我就切合我实际的开发经验来谈谈自己开发中遇到的坑,解决好不同版本的适配的问题.

   先帖代码在慢慢的分析:

  这个方法在onCreat()方法中调用,也可以在baseActivity中调用

private void initWindows() {
    Window window = getWindow();
    //这里是自己定义状态栏的颜色
    int color = getResources().getColor(R.color.colorPrimary);
 
    ViewGroup contentView = ((ViewGroup) findViewById(android.R.id.content));
    View childAt = contentView.getChildAt(0);
    if (childAt != null) {
      // 设置内容布局充满屏幕
        childAt.setFitsSystemWindows(true);
    }
    // 5.0及以上
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        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);
        // 4.45.0
    } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        // 透明状态栏
        window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        View view = new View(this);
        view.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, getStatusBarHeight(this)));
        view.setBackgroundColor(color);
        contentView.addView(view);
    }
}

/**
 * 获取状态栏高度
 *
 * @param context context
 * @return 状态栏高度
 */
private static int getStatusBarHeight(Context context) {
    int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
    return context.getResources().getDimensionPixelSize(resourceId);
}
 
   上面的代码可以直接的拷贝到自己的项目中直接用,希望这边文章对你有所帮助,求关注与赞谢谢!!!!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值