我创建简单的通知:
Notification.Builder builder = new Notification.Builder(this);
builder
.setContentTitle("title")
.setContentText("this is small text")
.setSmallIcon(R.drawable.my_small_icon)
.setTicker("test Ticker")
.setStyle(new Notification.BigTextStyle().bigText("big mess"));
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
NotificationManager notificationManager = getSystemService(NotificationManager.class);
Bitmap image = BitmapFactory.decodeResource(this.getResources(), R.drawable.icon);
builder.setLargeIcon(image);
RemoteViews contentView = builder.createContentView();
RemoteViews bigContentView = builder.createBigContentView();
// custom contentView and bigContentView
builder.setCustomContentView(contentView);
builder.setCustomBigContentView(bigContentView);
Notification n = builder.build();
builder.build();
notificationManager.notify(1, n);
}
[my_small_icon
是透明的白色图像,我的问题不同this question
它在状态栏中显示与我的徽标相同的小图标,但显示一个灰色正方形
此问题在Redmi 4A 7.1中发生LG K530F和Galaxy J7正常显示。
您能给我建议修复它吗?
我使用Android Asset Studio,但无济于事。
首先,您必须检查用于通知的图像是否具有透明背景。
第二,您必须保持每个密度的大小
MDPI - 24 x 24 (drawable-mdpi)
HDPI - 36 x 36 (drawable-hdpi)
XHDPI - 48 x 48 (drawable-xhdpi)
XXHDPI - 72 x 72 (drawable-xxhdpi)
XXXHDPI - 96 x 96 (drawable-xxxhdpi)
在此处跟随link根据Android文档-“更新或删除涉及颜色的资产。系统将忽略操作图标和主通知图标中的所有非Alpha通道。您应该假定这些图标将仅是Alpha。系统以白色绘制通知图标,以深灰色绘制动作图标。”现在,这很容易错过,我发现应用商店中有很多应用在运行,成千上万的用户没有遵循上述准则。因此,让我详细解释一下如何单击几下即可将通知图标转换为Android友好图标。在您喜欢的图像编辑器中打开您的图标文件。将您不想显示的图像的所有部分转换为透明像素。所有颜色和非透明像素均以白色显示。
您可以进入您的项目res文件夹
res => drawable文件夹=>右键单击drawable文件夹=>打开弹出窗口=>新建=>选择图像资产=>打开assest studio =>选择图标类型=>通知图标=>并创建并将该图标设置为通知