2017-07-26 165 views
3

我试图制作完全16x16的灰色图标,灰色和白色(灰色为hex,值为616161),以创建我的应用程序图标的轮廓。为什么我的smallIcon for Notifications总是灰显?

然而无论它在通知中显示为白色/灰色方块。我究竟做错了什么?

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

+0

变小API是20 –

+0

我不想改变我的分API,因为那时我失去了某些功能,我依赖于其他地方 – user8367195

+0

@PhátPhát说是正确的你的背景图像通知图标必须是透明的颜色 – MinnuKaAnae

回答

4

按照this link

首先让我们来了解一下Android文档,如下所示

“更新或删除涉及颜色的资产。系统忽略动作图标和主通知图标中的所有 非alpha通道。 您应该认为这些图标将仅为阿尔法。该系统 提请通知图标,在暗灰色的白色和操作图标。”

现在,这是很容易错过,我已经看到了很多的应用程序,是活在App Store有成千上万的用户谁没有跟随提到的指导方针。

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

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

enter image description here

你可以要求设计师或使用该tool来生成图标

+0

工作就像一个魅力,谢谢。我可以接受3 – user8367195

1

通知你必须使用不同的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; 
} 
+0

这与我的问题没有关系,我的API总是> = LOLLIPOP,问题是白色图标在该条件下出现 – user8367195

+0

你必须为不同版本创建2个不同的图标。对于> = LOLLIPOP,你必须创建白色的透明图标。 –

+0

看@PhátPhát的答案,这样你就会明白。 –

1

随着新的特性和功能,是Android 5.0包括各种系统的变化和API行为变化。 PL。请通过notification behavior changes

通知在白色(或非常光亮)012ff背景上用深色文本绘制以匹配新的材料设计小部件。确保 所有的通知都使用新的配色方案。如果您 通知看上去是错误的,解决这些问题:

  • 使用setColor()设置口音的颜色在你的背后图标图像的圆。
  • 更新或删除涉及颜色的资产。系统忽略操作图标和主通知图标中的所有非alpha通道。 您应该认为这些图标将仅为阿尔法。系统 以白色和动作图标以深灰色绘制通知图标。

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

相关问题