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

Raj*_*val 20 xml android push-notification android-vectordrawable

我正在使用PNG图像,但它的尺寸太大,所以我不得不妥协它的质量.所以我认为矢量可能是另一种方式?示例将是一个很大的帮助.

Far*_*deh 22

VectorDrawables仅作为高于(或等于)Android Lollipop的版本的通知图标 - 即API 21.

我知道这是因为我确实尝试使用.setSmallIcon(R.drawable.my_vector)这里的其中一个答案,虽然这对于API 21及以上版本完全正常,但我对Lollipop之前的版本有以下错误:

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

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


Yoa*_*uet 11

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

是的,只需将vector drawable称为通知的标准方式:

.setSmallIcon(R.drawable.my_vector)
Run Code Online (Sandbox Code Playgroud)

为了使用透明度(通知图标只有白色和/或透明),在设置矢量XML中的颜色时必须使用alpha通道,这意味着#00000000表示透明,#FFFFFFFF表示白色.

  • 我认为这仅适用于API 21+,因为我使用了上述内容,但是出现了错误[就像这样](http://stackoverflow.com/questions/37333930/notification-throws-error-when-using-vector-drawables)用于预制棒棒糖设备.另请参阅[this](http://stackoverflow.com/a/37756967/4230345). (16认同)

Taf*_*fel 6

2020 年更新

是的,这绝对是可能的。但让 Android Studio 负责图标创建。否则,您将面临不支持旧版 Android 版本的风险(查看其他答案)。

那么如何使用 Android Studio 创建正确的文件:

  1. 右键点击Android studio左侧的一个文件
  2. 新建 > 图像资源 在此输入图像描述
  3. 图标类型 > 通知图标

在此输入图像描述

  1. 选择矢量图像(例如 .svg)

Android studio 将创建所需的所有正确文件。