首页 > 其他分享 >安卓状态栏设置背景色

安卓状态栏设置背景色

时间:2024-07-10 16:26:47浏览次数:11  
标签:状态栏 安卓 WindowManager 背景色 FLAG VERSION Build activity

项目场景:

app需要根据不同的页面设置不同的状态栏颜色。


问题描述:

首先就是在设置之前需要先将状态栏的颜色设置为沉浸式的,这样的话他的背景色就是透明的

android:fitsSystemWindows="true" 

把这个方法,放在需要设置状态栏颜色的页面的根部局里面。

然后就是在页面初始化的时候调用一个方法

public static void setStatus(Activity activity, int resouse) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { //系统版本大于19
        setTranslucentStatus(activity, true);
    }
    //状态栏背景着色
    SystemBarTintManager tintManager = new SystemBarTintManager(activity);
    tintManager.setStatusBarTintEnabled(true);
    tintManager.setStatusBarTintResource(resouse);

    //去除灰色遮罩
    //Android5.0以上
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        Window window = activity.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) {//Android4.4以上,5.0以下
        activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
    }
}
public static void setTranslucentStatus(Activity activity, boolean on) {
    Window win = activity.getWindow();
    WindowManager.LayoutParams winParams = win.getAttributes();
    final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
    if (on) {
        winParams.flags |= bits;        // a|=b的意思就是把a和b按位或然后赋值给a   按位或的意思就是先把a和b都换成2进制,然后用或操作,相当于a=a|b
    } else {
        winParams.flags &= ~bits;        //&是位运算里面,与运算  a&=b相当于 a = a&b  ~非运算符
    }
    win.setAttributes(winParams);
}

需要传入当前的activity 和你当前页面的需要实现的背景色。还可以避免状态栏出现灰色遮罩问题。 

标签:状态栏,安卓,WindowManager,背景色,FLAG,VERSION,Build,activity
From: https://blog.csdn.net/weixin_58623780/article/details/139442249

相关文章

  • Unity实现安卓App预览图片、Pdf文件和视频的一种解决方案
    一、问题背景最近在开发app项目,其中有个需求就是需要在app软件内显示图片、pdf和视频,一开始想的解决方案是分开实现,也就是用Image组件显示图片,找一个加载pdf的插件和播放视频的插件,转念一想觉得太麻烦了,于是就想着看能不能想电脑浏览器打开图片、pdf和视频一样直接加载显示......
  • 安卓ADB命令
    安卓的ADB(AndroidDebugBridge)是一个强大的命令行工具,用于与安卓设备进行通信和调试。官方文档:https://developer.android.google.cn/tools/adb?hl=zh-cn使用前提已安装AndroidSDK已连接调试手机或模拟器#找到adb.exe的路径cdC:\Users\YourUsername\AppData\Lo......
  • element-plus自定义弹框头背景色
    1.效果如下:弹框头部定制背景色;关闭按钮和标题对齐;鼠标悬浮关闭按钮颜色变浅。2.用到element-plus版本:  "element-plus":"2.7.6",3.具体思路:整个弹框的背景色改成蓝色,padding:0;header、body、footer背景色改成白色,字体黑色不变;padding给20px;关闭按钮高度......
  • 安卓手机微信H5无法长按保存图片修复
     <imageid="saveImg":src="imgSrc"></image>主要是因为空格的处理:this.img.replace(/(\r\n)|(\n)|(\r)/g,"")网络上的其他方式都尝试了 却忽略了最简单的问题;computed:{ imgSrc(){ if(/android/i.test(navigator.userAgent)){//判断是不......
  • 混合开发H5页面的数字字体在IOS 安卓上显示不一样
    背景做完H5页面,UI走查的时候,发现IOS下数字的字体不对,安卓下是正常的,于是就查了下原因,以此做个记录看下实际效果左边是安卓,右边是IOS的效果,明显看出来数字的字体是不一样的安卓、IOS字体不一致的原因在安卓、IOS系统中,如果没有专门设置字体的话,会使用默认的字体,汉字,英文......
  • 修改element-ui日期下拉框datetimePicker的背景色样式
    如图: 1、修改背景色.el-date-picker.has-sidebar.has-time{  background:#04308D;  color:#fff;  border:1pxsolid#326AFF}.el-date-picker__header-label{  color:#ffffff;}.el-date-tableth{  color:#fff;}.el-icon-d-arrow-......
  • 只有一个鸿蒙好?还是鸿蒙、安卓、IOS并存好?
    这个话题,现在很敏感,为了防止被喷,我提前且清楚的交待我的观点:我双手欢迎鸿蒙、欢迎仓颉,而且我已经用行动来支持,比如2021年刚发布ArkUI时,我就第一时间上手了,且这几年一直在跟进;再比如,仓颉6月21日发布,6月22日我就已经概览了整个文档,并且准备深入学习。1、华为是一家企业6月21......
  • 安卓签名
    在逆向工程之后打包的apk通常就没了签名。而没签名是安装不到手机上的,会提示无签名不让安装。在排除应用本身对签名的校验情况下,我们可以自行签名解决这个问题。生成签名密钥签名过程使用一对公钥和私钥,私钥用于签名,公钥用于验证签名。AndroidSDK提供了一个工具keytool来生......
  • 安卓TextView控件实现下划线
    效果展示这里需要使用到LayerDrawable,对应于<layer-list>标签。在drawable目录下新建一个text_underline.xml文件,text_underline.xml的代码如下:<?xmlversion="1.0"encoding="utf-8"?><layer-listxmlns:android="http://schemas.android.com/apk/res/andro......
  • 安卓实现圆形按钮轮廓以及解决无法更改按钮颜色的问题
    1.实现按钮轮廓在drawable文件新建xml文件<shapexmlns:android="http://schemas.android.com/apk/res/android"<!--实现圆形-->android:shape="oval"><!--指定内部的填充色--><solidandroid:color="#FFFFFF"/><......