android通知图标显示为白色块

时间:2016-06-23 16:56:58

标签: android image icons android-notifications

我的通知显示图标时出现问题。我已经通过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
}

有什么建议吗?

P.S。我看了this post,同样的问题,但我觉得它没有帮助/有用,或者我只是不理解要求......

4 个答案:

答案 0 :(得分:4)

我找到了解决方案!

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

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

制作和准备图片

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

  6. 我的设置(默认情况下给出)是:

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

    • 保存透明色 - 经过检查(我试过只检查了这个,但是没有用 - 有人可以延伸为什么不这样做)
    • 将透明度保存为Alpha通道 - 已选中
  8. 另存为PNG文件。 enter image description here 使用保存选项保存框
  9. 在Android Studio中:

    1. Right-Click Drawable folder > Add image asset(任何资源文件夹都应该这样做) enter image description here
    2. 点击顶部下拉列表中的Notification Icon(默认为Launcher Iconenter image description here
    3. 选择Image > Browse to image> click ok enter image description here 您会注意到您的图片是灰度
    4. 这是正常的,因为Lollipop SDK (API 21 - Ver 5.0.1)只允许这种颜色方案,在搜索中我遇到了材料设计页面,其中提到了这一行(有人可以扩展为什么会这样)

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

      我相信人们可以从“丰富多彩”的角度使用它,在这种情况下, IrfanView 具有黑色的默认背景,这会产生与此颜色相关的“倒置”图像(假设在 IrfanView ,一个留下“使用主窗口颜色进行透明 - 检查”)您可以创建不同且有趣的图像。

      我真的希望这有帮助!

答案 1 :(得分:0)

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

答案 2 :(得分:0)

从此link转换您的png图标。希望它会对你有所帮助。

答案 3 :(得分:0)

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

如果图标具有圆形颜色背景, 该图标将变为白色圆形块。

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