Android开发之获取状态栏-BarUtils

本文详述了在Android开发中如何操作状态栏、消息栏和导航栏,包括获取高度、设置可见性、颜色以及沉浸式效果等关键操作。
摘要由CSDN通过智能技术生成

在开发中,经常会需要会各种栏的设置。比如,获取状态栏高度,对状态栏进行隐藏等,为此,对于这些操作整理了下

目录

状态栏
获取状态栏高度
public static int getStatusBarHeight() {
        Resources resources = Utils.getApp().getResources();
        int resourceId = resources.getIdentifier("status_bar_height", "dimen", "android");
        return resources.getDimensionPixelSize(resourceId);
}
设置状态栏是否可见
public static void setStatusBarVisibility(@NonNull final Activity activity,final boolean isVisible) {
       setStatusBarVisibility(activity.getWindow(), isVisible);
}
public static void setStatusBarVisibility(@NonNull final Window window, final boolean isVisible) {
       if (isVisible) { 
           window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
       } else {
           window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
       }
}
设置状态栏模式
public static void setStatusBarLightMode(@NonNull final Activity activity,final boolean isLightMode) {
        setStatusBarLightMode(activity.getWindow(), isLightMode);
}

public static void setStatusBarLightMode(@NonNull final Window window,final boolean isLightMode) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            View decorView = window.getDecorView();
            if (decorView != null) {
                int vis = decorView.getSystemUiVisibility();
                if (isLightMode) {
                    window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
                    vis |= View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
                } else {
                    vis &= ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
                }
                decorView.setSystemUiVisibility(vis);
            }
        }
}
将view的topMargin加上状态栏高度
//getStatusBarHeight()方法见文章开头

private static final int    TAG_OFFSET    = -123;
public static void addMarginTopEqualStatusBarHeight(@NonNull View view) {
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) return;
        Object haveSetOffset = view.getTag(TAG_OFFSET);
        if (haveSetOffset != null
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值