android通知图标显示为白色块
Posted
技术标签:
【中文标题】android通知图标显示为白色块【英文标题】:android notification icon showing as white block 【发布时间】: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 我为我如何解决我的问题添加了一个深入的答案,如果你觉得有必要,你可以看看和改进 【参考方案1】:我找到了解决办法!
我只发现了有关 android 通知(SDK 22 / 版本 5.1.1)要求的提示,但在搜索了 4 个多小时后,终于找到了一个完整且可行的解决方案。
这是我遵循的步骤,它似乎与各种论坛、问题/答案和文档中提到的内容一致,但没有所需的“步骤/要求”:
创建和准备图像
-
根据需要创建您的图像,如果您愿意,可以使用您的应用程序图标:
又快又脏
下载一个应用程序来设置透明度 - 我用IrfanView,效果很好
这是我在 IrfanView 中的图片
在 IrfanView 中打开您的图像,
click File > Save As or press 's'
您应该打开Save Dialog
(以及右上角的保存选项对话框 - 如果没有,请在保存对话框的底部选择Save options dialog
复选框,它应该会打开)
我的设置(默认情况下)是:
压缩等级 - 6 为透明度使用主窗口颜色 - 已选中 二进制编码 (ICO):使用主窗口颜色作为透明度 - 选中选中以下 2 个框:
保存透明颜色 - 选中(我试过只选中这个,它不起作用 - 有人可以扩展为什么不) 将透明性保存为 Alpha 通道 - 选中 另存为 PNG 文件。 带有保存选项的保存框在 Android Studio 中:
Right-Click Drawable folder > Add image asset
(任何资源文件夹都应该这样做)
点击顶部下拉列表中的Notification Icon
(默认为Launcher Icon
)
选择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 中得到相同的输出以上是关于android通知图标显示为白色块的主要内容,如果未能解决你的问题,请参考以下文章