如何为 Android 通知图标支持多种颜色(超过两种颜色)?

6
  1. 我正在开发一个与Android (API level >23)相关的应用程序,并且必须支持通知(Notification)
  2. 我的通知图标支持超过两种颜色。
  3. 如果我使用该图标,则在通知面板中以灰色显示该图标。
  4. 因此,我创建了透明背景和完全白色图标,并动态设置颜色。

  5. 但是我只能设置一种颜色(setColor())。

所以我的问题是:-

如何为Android通知图标支持多种颜色(超过两种颜色或颜色渐变)?
注意: 我参考了Android Push Notifications: Icon not displaying in notification, white square shown instead

感谢您的支持。

2个回答

8
如果您的应用程序目标是SDK 21+,系统将始终对您的通知图标进行着色。
  • 在暗色状态栏中显示时,通知图标将为白色
  • 在浅色状态栏中显示时(API 23+),通知图标将为深灰色
  • 当它折叠在通知栏底部时,通知图标将为深灰色
  • 当它是通知栏中的一部分时,您设置的颜色将作为其颜色(API 24+),在此之前默认大型通知图标是白色的图标覆盖在彩色圆圈上

除了上述描述之外,您无法控制颜色。

但是可以使用alpha通道。您可以在图标中实现不同程度的白色/深灰色/颜色。

没有其他方法,请将此传递给设计师和管理人员。

Android 5.0行为变更

通知

Material Design风格

  • 更新或删除涉及颜色的资源。系统忽略动作图标和主要通知图标中所有非alpha通道。您应该假设这些图标仅为alpha。系统以白色绘制通知图标和以深灰色绘制动作图标。

来源:https://developer.android.com/about/versions/android-5.0-changes.html#NotificationsMaterialDesignStyle


@AlokMishra,你引用了另一个问题,那个问题已经有了一个被接受的答案,在那个答案中有一个指向官方Google文档的链接。我不得不再次链接到同样的东西并不能使它更加有效。规则已经制定,它确实是官方的,请接受它。为了方便起见,这是链接:https://developer.android.com/about/versions/android-5.0-changes.html#NotificationsMaterialDesignStyle - Eugen Pechanec
谢谢您的回答 :) 最终设计和产品团队同意了您的解决方案。 - Alok Mishra
@EugenPechanec 但有些应用程序可以设置不同颜色的通知图标。例如Domino's。如果不可能,那么他们如何实现呢?因为我也想设置不同颜色的通知图标。 - Kousalya
发送一个链接,有一百万的多米诺骨牌。只有目标SDK不超过19的应用程序才会有彩色通知图标。这些应用程序也将无法进入Play商店,该商店需要目标SDK大约为28。 - Eugen Pechanec
@EugenPechanec 这是我的堆栈问题。在这里,我添加了我在我的安卓手机(派版本)上拍摄的多米诺骨牌的截图。 - Kousalya

-1

通知

确保您的通知考虑到这些Android 5.0的更改。要了解有关为Android 5.0及更高版本设计通知的详细信息,请参阅通知设计指南。

Material Design风格

通知使用黑色文本放置在白色(或非常浅的)背景上,以匹配新的Material Design小部件。确保所有通知都符合新的颜色方案。如果您的通知看起来不对,请进行以下修复:

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

from: https://developer.android.com/about/versions/android-5.0-changes.html#NotificationsMaterialDesignStyle


1
这是通知的先决条件,但如何设置多种颜色,这就是 OP 提出的问题? - M D
当您构建通知时,Notification.Builder 包含设置图标的方法。 - SebastienRieu
我的问题是如何在通知图标中设置多个颜色,而不是关于通知的基本设置或setIcon()。 - Alok Mishra
如果您有多个不同颜色的图标,您可以轻松创建一个方法,在设置通知时返回适当的图标变体类型。builder.setSmallIcon(getGoodColorIcon()) - SebastienRieu
请问您能否创建一个在Android-O中可以使用的通知图标样本,其中包含超过2种颜色? - Alok Mishra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接