【问题标题】:android notification icon showing as white blockandroid通知图标显示为白色块
【发布时间】:2016-06-23 16:56:57
【问题描述】:

我在通知中显示图标时遇到问题。我已经通过material designs page 的图标和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
}

有什么建议吗?

附言我看过this post,也是同样的问题,但我觉得它没有帮助/有用,或者我只是不明白要求...

【问题讨论】:

  • 您的通知图片是什么样的?有透明度吗?
  • 不,这是一个简单的白色背景,颜色为大 5,用 MS 油漆制作 - 用于调试的快速图标
  • 是的,这就是问题所在。为了保持一致的外观,生成了图标,以便可以使它们与主题相匹配。您必须将其仅视为前景色和透明度。
  • @CaseyB 我为我如何解决我的问题添加了一个深入的答案,如果你觉得有必要,你可以看看和改进

标签: android image icons android-notifications


【解决方案1】:

我找到了解决办法!

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

这是我遵循的步骤,它似乎与各种论坛、问题/答案和文档中提到的内容一致,但没有所需的“步骤/要求”:

创建和准备图像

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

  5. 我的设置(默认情况下)是:

    • 压缩等级 - 6
    • 为透明度使用主窗口颜色 - 已选中
    • 二进制编码
    • (ICO):使用主窗口颜色作为透明度 - 选中
  6. 选中以下 2 个框:

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

在 Android Studio 中:

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

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

在下面,您会注意到您的通知图标具有不同的“dpi 分辨率”,添加图像通常会显示一个白色块,但添加透明度可以解决此问题。

我相信人们可以从“彩色”的角度来使用它,在这种情况下,IrfanView 有一个默认的黑色背景,这会创建一个相对于这种颜色的“倒置”图像(假设在IrfanView,留下“使用主窗口颜色作为透明度 - 选中”)您可以创建不同且有趣的图像。

我真的希望这会有所帮助!

【讨论】:

  • 非常感谢。它对我有用。我的问题是向下滚动通知栏时,Android O 设备通知图标(白色)没有按原色覆盖。
【解决方案2】:

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

如果图标有圆角颜色背景, 图标会变成一个白色的圆形块。

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

【讨论】:

    【解决方案3】:

    我之前也遇到过这个问题,问题是你使用的图片大小,尝试将其调整为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());
    

    【讨论】:

    • 不限制特定的屏幕尺寸,例如hdpi,意味着 144px 将允许 xxxhdpi 的最大分辨率,Android Studio 将自动缩放到每个屏幕分辨率?或者通知最大分辨率是否将所有屏幕尺寸限制为 32 像素?
    • 我也是这么想的,但是在努力研究这个问题之后,我发现了这个答案,它似乎适用于包括 nexus 9 平板电脑在内的许多设备。
    • 把你的png图片放到drawable目录中。
    【解决方案4】:

    link 转换您的 png 图标。希望对你有帮助。

    【讨论】:

    • 当我选择添加图像资产 > 通知图标> 选择图像时,我在 Android Studio 中得到相同的输出
    猜你喜欢
    • 2021-11-03
    • 2015-08-28
    • 2017-02-20
    • 2017-08-22
    • 1970-01-01
    • 2018-07-04
    • 2019-06-09
    • 1970-01-01
    相关资源
    最近更新 更多