Android状态栏/通知栏图标白底问题

状态栏会显示一个白底的方框;下拉通知栏展开时的图标为白底方框加圆框,不展开时为黑底方框。

vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java

private void updateTintForIcon(StatusBarIconView v, int tint) {

boolean isPreL = Boolean.TRUE.equals(v.getTag(R.id.icon_is_pre_L));

int color = StatusBarIconView.NO_COLOR;

//*/not replace color,def no color

boolean colorize = false;

/*/
boolean colorize = !isPreL || NotificationUtils.isGrayscale(v, mContrastColorUtil);

//*/

if (colorize) {

color = DarkIconDispatcher.getTint(mTintArea, v, tint);

}

v.setStaticDrawableColor(color);

v.setDecorColor(tint);

}

frameworks/base/core/java/android/app/Notification.java

private void processSmallIconColor(Icon smallIcon, RemoteViews contentView,

StandardTemplateParams p) {

//*/def use no color

boolean colorable = false;

/*/
boolean colorable = !isLegacy() || getColorUtil().isGrayscaleIcon(mContext, smallIcon);

//*/

int color;

if (isColorized(p)) {

color = getPrimaryTextColor(p);

} else {

color = resolveContrastColor(p);

}

if (colorable) {

contentView.setDrawableTint(R.id.icon, false, color,

PorterDuff.Mode.SRC_ATOP);

}

contentView.setInt(R.id.notification_header, "setOriginalIconColor",

colorable ? color : NotificationHeaderView.NO_COLOR);

}

单独应用通知设置:

NotificationManager notificationManager= (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

NotificationCompat.Builder builder=new NotificationCompat.Builder(this);

Notification notification=builder.setContentTitle(getString(R.string.notification_title))

.setContentText(getString(R.string.notification_content)).setWhen(System.currentTimeMillis())

.setDefaults(Notification.DEFAULT_LIGHTS).setSmallIcon(R.mipmap.icon_weixin)

.setColor(Color.parseColor("#880000FF"))

.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.weixin_raw))

.setContentIntent(PendingIntent.getActivities(this,0x0001,new Intent[]{new Intent(this,MainActivity.class)},PendingIntent.FLAG_UPDATE_CURRENT))

.build();

notificationManager.notify(1,notification);

大图标是应用logo图标;

小图标背景色要透明,然后用纯白勾勒出你需要的图标(用任意颜色都会表现为白色)。

相关推荐
凯文的内存29 分钟前
Android14 OTA升级速度过慢问题解决方案
android·ota·update engine·系统升级·virtual ab
VinRichard33 分钟前
Android 常用三方库
android
Aileen_0v02 小时前
【玩转OCR | 腾讯云智能结构化OCR在图像增强与发票识别中的应用实践】
android·java·人工智能·云计算·ocr·腾讯云·玩转腾讯云ocr
江上清风山间明月5 小时前
Flutter DragTarget拖拽控件详解
android·flutter·ios·拖拽·dragtarget
debug_cat7 小时前
AndroidStudio Ladybug中编译完成apk之后定制名字kts复制到指定目录
android·android studio
编程洪同学11 小时前
Spring Boot 中实现自定义注解记录接口日志功能
android·java·spring boot·后端
氤氲息14 小时前
Android 底部tab,使用recycleview实现
android
Clockwiseee14 小时前
PHP之伪协议
android·开发语言·php
小林爱14 小时前
【Compose multiplatform教程08】【组件】Text组件
android·java·前端·ui·前端框架·kotlin·android studio
小何开发15 小时前
Android Studio 安装教程
android·ide·android studio