android 显示为白色块的通知图标

android notification icon showing as white block

我一直无法在通知中显示图标。我经历了 material designs page for icons and Notification doc.

我使用了不同的比例尺,在BMP 256 颜色格式中:360px、144px、48px、24px 16px 都继续显示一个白色块。

我将格式更改为 PNG,使用 144px(命名为 "ic_notify_icon",在代码中使用),仍然没有成功。

//Global
private NotificationManager mNotifyManager ;
private Notification mNotify;

private void initialize() {
    mNotifyManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    Notification.Builder mNotificationBuilder = new Notification.Builder(this);
    mNotificationBuilder.setSmallIcon(R.mipmap.ic_notify_icon);
    mNotificationBuilder.setContentTitle("A Title here");
    mNotificationBuilder.setContentText("Some content text here");
    mNotify = mNotificationBuilder.build();
    ShowNotify();
}

private void ShowNotify(){
    //...some code here
    mNotifyMan.notify(0, mNotify);
    //...some code here
}

有什么建议吗?

p.s。我看过 this post,也是同样的问题,但我没有找到它 helpful/useful,或者我只是不明白要求...

我以前遇到过这个问题,问题是你使用的图像大小,尝试将其调整为 32x32 png。

        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
                .setSmallIcon(R.drawable.ic_tend_notification)
                .setContentTitle(Constants.APP_NAME)
                .setContentText(message)
                .setTicker(message)
                .setAutoCancel(true)
                .setSound(defaultSoundUri)
                .setContentIntent(pendingIntent);

        NotificationManager notificationManager =
                (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

        notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());

从这个 link 转换你的 png 图标。希望对你有帮助。

我找到了解决办法!

我只找到了关于 Android 通知(SDK 22 / 版本 5.1.1)的要求的提示,但在搜索了 4 个多小时后,终于找到了一个完整且有效的解决方案。

这是我遵循的步骤,它似乎与各种论坛、questions/answers 和文档中提到的内容一致,但没有 "steps/requirements" 需要的内容:

创建和准备图像

  1. 根据需要创建您的图像,如果您愿意,可以使用您的应用程序图标: 又快又脏
  2. 下载一个设置透明度的应用程序 - 我用过 IrfanView,效果很好 这是我在 IrfanView
  3. 中的图片
  4. 在 IrfanView 中打开您的图像,click File > Save As or press 's'
  5. 你应该有一个 Save Dialog 打开(和一个保存选项对话框,右上角 - 如果没有,就在保存对话框的底部,select Save options dialog 复选框,它应该打开)

  6. 我的设置(默认设置)是:

    • 压缩级别 - 6
    • 使用主要 window 颜色实现透明度 - 选中
    • 二进制编码
    • (ICO):使用主要 window 颜色实现透明度 - 选中
  7. 选中以下 2 个框:

    • 保存透明色 - 选中(我试过只选中这个,它没有用 - 有人可以扩展为什么不)
    • 将透明度另存为 Alpha 通道 - 选中
  8. 另存为 PNG 文件。 带有保存选项的保存框

在 Android 工作室中:

  1. Right-Click Drawable folder > Add image asset(任何资源文件夹都可以)
  2. 单击顶部下拉列表中的 Notification Icon(默认为 Launcher Icon
  3. Select Image > Browse to image> click ok 您会注意到您的图像是灰度的

这是正常的,因为 Lollipop SDK (API 21 - Ver 5.0.1) 只允许这种类型的配色方案,在搜索时我发现材料设计页面在这一行中提到了一些内容(有人可以扩展为什么会这样)

下面,您会注意到您的通知图标不同'dpi resolutions',添加图片通常会显示白色块,但添加透明度可以解决此问题。

我相信可以从 'colorful' 的角度来使用它,在这种情况下,IrfanView 有一个默认的黑色背景,这创造了一个 "inverted"关于这种颜色的图像(假设在 IrfanView 中,一个离开 "Use main windows color for transparency - checked" )你可以创建不同的和有趣的图像。

我真的希望这对您有所帮助!

android中的通知图标必须是透明的,没有背景色!

如果图标有圆形的彩色背景, 图标会变成白色的圆块。

只有背景非常透明的图标才能用作通知图标。