我们可以使用VectorDrawable或VectorXML作为android中的推送通知的图标?

我正在使用PNG图像,但是它的尺寸变得太大,所以我必须妥协的质量。 所以我在想vector可能是另一种方式? 例子将是一个很大的帮助。

Solutions Collecting From Web of "我们可以使用VectorDrawable或VectorXML作为android中的推送通知的图标?"

我们可以使用VectorDrawable或VectorXML作为推送通知的图标吗?

是的,只需调用vector绘制的通知的标准方式:

.setSmallIcon(R.drawable.my_vector) 

为了使用透明度(通知图标仅为白色和/或透明),在设置vectorXML中的颜色时,必须使用Alpha通道,即透明的#00000000和白色的#FFFFFFFF。

VectorDrawables只能作为高于(或等于)Android Lollipop的版本的通知图标 – 即API 21。

我知道这一点,因为我尝试使用.setSmallIcon(R.drawable.my_vector) ,如其他答案所示,尽pipe这对API 21及以上版本来说是完美的,但是在棒棒糖版本之前,我得到了以下错误:

android.app.RemoteServiceException:从包com.example.app发布的错误通知:无法创build图标:StatusBarIcon(pkg = com.example.appuser = 0 id = 0x7f02005a level = 0 visible = true num = 0)

Stack Overflow还有其他的答案支持这个论点:

  • 一个由CommonsWare
  • 另一个由ianhanniballake

如果您正在使用vector绘制支持包,则可能不应在通知中使用VectorDrawable图标 – 您可能会在前棒棒糖设备上遇到错误。

看看这个: 使用vector绘图时,通知会抛出错误

Wuthoutvector绘制的支持包,我没有遇到任何错误,但使用它后,前棒棒糖设备无法在通知时访问vector图标,并抛出此错误:

android.app.RemoteServiceException:从包com.xxx.xxx发布的错误通知:无法创build图标:StatusBarIcon(pkg = com.xxx.xxxuser = 0 id = 0x7f020082 level = 0 visible = true num = 0)

对于版本<21,

如果你想直接传入vectordrawable资源id到setSmallIcon() :没办法。

对于setLargeIcon()间接来说,是的。 使用

 VectorDrawableCompat drawable = VectorDrawableCompat.create(context.getResources(), resource id, theme); 

然后从这个drawable创build位图并传入setLargeIcon()