【问题标题】:Why is my smallIcon for Notifications always greyed out?为什么我的通知小图标总是灰显?
【发布时间】:2018-01-01 06:48:59
【问题描述】:

我尝试将小图标设置为 16x16,灰度,只有灰色和白色(灰色为 hex 值 616161),以创建我的应用程序图标的轮廓。

然而,不管它在通知中显示为白色/灰色方块是什么。我做错了什么?

(我的最小 api 是 21,假设它是相关的)

【问题讨论】:

  • 更改mini api为20
  • 我不想更改我的 min API,因为那样我会失去在其他地方依赖的某些功能
  • @Phát Phát 说的是正确的,通知图标的背景图片必须是透明色
  • 查看here 中描述的 Android 5(API 级别 21)中的更改以及here 中解释的指南

标签: android notifications icons material-design


【解决方案1】:

关注this link

首先让我们了解一下Android文档如下

“更新或删除涉及颜色的资产。系统忽略所有 操作图标和主通知图标中的非 alpha 通道。 您应该假设这些图标仅是 Alpha 版。系统 以白色绘制通知图标,以深灰色绘制操作图标。”

现在很容易忽略这一点,我看到许多应用商店中的应用程序都有成千上万的用户没有遵循上述指南。

让我详细解释一下如何通过点击几下将通知图标转换为 Android 友好的图标。

在您最喜欢的图像编辑器中打开您的图标文件。将您不想显示的图像的所有部分转换为透明像素。所有颜色和非透明像素均以白色显示。让我们来看一个例子。

已编辑:感谢@Andrey Patseiko 提供tool

【讨论】:

  • @nhp 您介意更新指向您提到的工具的链接吗?格式不正确
  • Android 对该图标的官方指南是here
  • 我在 PNG 格式中使用了徽标而不是 svg 格式,为我唤醒了。
【解决方案2】:

除了新特性和功能之外,Android 5.0 还包括各种系统更改和 API 行为更改。 PL。通过notification behavior changes

通知是在白色(或非常浅)上用深色文本绘制的 背景以匹配新的材料设计小部件。确保 您的所有通知都与新的配色方案相得益彰。如果你的 通知看起来有问题,请修复它们:

  • 使用setColor() 在图标图像后面的圆圈中设置强调色。
  • 更新或删除涉及颜色的资产。系统会忽略操作图标和主通知图标中的所有非 Alpha 通道。 您应该假设这些图标仅是 Alpha 版。系统 以白色绘制通知图标,以深灰色绘制操作图标。

所以,基本上你必须使用silhouette 图标作为 API 级别 21+ 的通知图标

【讨论】:

  • 由于 Android 5(API 级别 21)中的更改文档已消失,因此提供了存档版本here
【解决方案3】:

对于通知,您必须为不同版本的 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;
}

【讨论】:

  • 这与我的问题无关,我的 api 将始终 >= LOLLIPOP,问题是在该条件下显示的白色图标
  • 您必须为不同的版本创建 2 个不同的图标。对于 >= LOLLIPOP,您必须使用白色创建透明图标。
  • 看看@Phát Phát 的答案,你就会明白了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多