我试图制作一个小的图标,大小正好为16x16像素,灰度图,只有灰色和白色(灰色的hex
值为616161),以创建我的应用程序图标的轮廓。
但无论如何,在通知中它总是显示为白/灰色的正方形。我做错了什么?
(我的最低api
为21,假设这是相关的)
我试图制作一个小的图标,大小正好为16x16像素,灰度图,只有灰色和白色(灰色的hex
值为616161),以创建我的应用程序图标的轮廓。
但无论如何,在通知中它总是显示为白/灰色的正方形。我做错了什么?
(我的最低api
为21,假设这是相关的)
请点击此链接
首先,让我们了解一下以下Android文档:
"更新或删除涉及颜色的资源。系统忽略动作图标和主要通知图标中的所有非 Alpha 通道。您应该假设这些图标仅为 Alpha。系统以白色绘制通知图标,以深灰色绘制动作图标。"
现在这很容易被忽视,我看到很多应用程序在应用商店上线并拥有成千上万的用户,但他们没有遵循上述指南。
所以,让我详细解释一下如何在几个步骤中将您的通知图标转换为适用于Android的图标。
在您喜爱的图像编辑器中打开图标文件。将图像中不想显示的所有部分转换为透明像素。所有颜色和不透明像素都会显示为白色。让我们通过一个示例来了解一下。
编辑后:感谢 @Andrey Patseiko 提供的工具
对于通知,您需要针对不同版本的Android使用不同的图标:
Notification notification = new Notification.Builder(context)
.setAutoCancel(true)
.setContentTitle("My notification")
.setContentText("Look, white in Lollipop, else color!")
.setSmallIcon(getNotificationIcon())
.build();
return notification;
根据版本获取通知图标
private int getNotificationIcon() {
boolean useWhiteIcon = (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP);
return useWhiteIcon ? R.drawable.icon_silhouette : R.drawable.ic_launcher;
}
通知使用黑色文本,位于白色(或非常浅的)背景上以匹配新的 Material Design 小部件。确保所有通知都符合新的颜色方案。如果您的通知看起来不正确,请进行以下更改:
- 使用
setColor()
在图标图像后设置一个带有强调颜色的圆形。- 更新或删除涉及颜色的资源。系统忽略动作图标和主要通知图标中的所有非 Alpha 通道。您应该假定这些图标仅为 Alpha。系统会在白色中绘制通知图标,在暗灰色中绘制操作图标。
因此,基本上您必须使用 轮廓 图标作为 API Level 21+ 的通知图标。