• Android 10 状态栏通知图标和下拉状态栏图标为白色问题


    前言

    安装第三方应用,会在状态栏上面和下拉状态栏通知图标显示白色

    原因

    因为google在android5.0上面做了限制,为了统一系统风格。之后的状态栏icon就不能够随便用一张色彩丰富的图片了,只能够有白色和透明两个颜色出现。5.0以上(不包含5.0),系统默认通知栏图标为系统启动图标,会自动将通知栏的图标(有色区域)全部填充为白色,像一个白色格子,这是Google 为了实现材料设计规范,特意为之。为了去除白色图标,镂空背景即可:
    所以这之后的想要设置显示状态栏icon不为白色:这个icon只要背景需要透明,只让内容块纯白色。

    代码路径

    vendor\mediatek\proprietary\packages\apps\SystemUI\src\com\android\systemui\statusbar\phone\NotificationIconAreaController.java
    frameworks\base\core\java\android\app\Notification.java

    解决方法

    1、在NotificationIconAreaController.java文件中,不允许系统进行着色,修改状态栏显示图标

    diff --git a/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIco
    nAreaController.java b/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/statusbar/phone/Notif
    icationIconAreaController.java
    index f52becaf7b..c79d29e01a 100644
    --- a/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaCo
    ntroller.java
    +++ b/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaCo
    ntroller.java
    @@ -430,7 +430,7 @@ public class NotificationIconAreaController implements DarkReceiver,
             boolean isPreL = Boolean.TRUE.equals(v.getTag(R.id.icon_is_pre_L));
             int color = StatusBarIconView.NO_COLOR;
             boolean colorize = !isPreL || NotificationUtils.isGrayscale(v, mContrastColorUtil);
    -        if (colorize) {
    +        if (!colorize) {
                 color = DarkIconDispatcher.getTint(mTintArea, v, tint);
             }
             v.setStaticDrawableColor(color);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    2、在Notification.java文件中,对下拉状态栏通知图标白色修改

    --- a/frameworks/base/core/java/android/app/Notification.java
    +++ b/frameworks/base/core/java/android/app/Notification.java
    @@ -91,7 +91,7 @@ import com.android.internal.R;
     import com.android.internal.annotations.VisibleForTesting;
     import com.android.internal.util.ArrayUtils;
     import com.android.internal.util.ContrastColorUtil;
    
    
     import java.lang.annotation.Retention;
     import java.lang.annotation.RetentionPolicy;
     import java.lang.reflect.Constructor;
    @@ -5708,6 +5708,9 @@ public class Notification implements Parcelable
                 } else {
                     color = resolveContrastColor(p);
                 }
    
    +                colorable =false;
    
                 if (colorable) {
                     contentView.setDrawableTint(R.id.icon, false, color,
                             PorterDuff.Mode.SRC_ATOP);
    (END)
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
  • 相关阅读:
    多媒体透明屏,在户外广告领域中,有哪些应用展示?
    U盘插入提示格式化才能使用,但里面有数据无法复制出来怎么解决?
    竞赛 深度学习+python+opencv实现动物识别 - 图像识别
    【OpenCV 例程200篇】236. 特征提取之主成分分析(OpenCV)
    Redis 0817
    GoLong的学习之路(二十二)进阶,语法之并发(go最重要的特点)(channel的主要用法)
    Splunk UBA 导入Asset 设备
    《Spring实战(第四版)》pdf
    服务器的操作系统,你选择哪些?
    PyTorch框架中torch、torchvision、torchaudio与python之间的版本对应关系(9月最新版)
  • 原文地址:https://blog.csdn.net/wq892373445/article/details/127859177