我有这个问题,我从我在通知中使用的URL生成位图.然而,在我的手机上,Bitmap显示为一个小白色的方块.我看着它,发现很多帖子像这样说:

Icon not displaying in notification: white square shown instead

我确定我的小图标通知确实是透明的.然而,对于大图标,我意识到大图标不能透明,因为它实际上是一个从URL生成的位图.那么我该如何解决这个问题,并确保图像呈现正确,而不是将大图标显示为白色方块?这是我的尝试:

NotificationService.java:

NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context)

.setContentTitle(getString(R.string.app_name))

.setContentText(remoteMessage.getNotification().getBody())

.setTicker(remoteMessage.getFrom() + " has responded!")

.setLargeIcon(AndroidUtils.getBitmapFromURL(remoteMessage.getNotification().getIcon()))

.setAutoCancel(true)

.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))

.setStyle(new NotificationCompat.BigTextStyle().bigText(remoteMessage.getNotification().getBody()))

.setSmallIcon(R.drawable.ic_tabs_notification_transparent);

AndroidUtils.java:

public static Bitmap getBitmapFromURL(String userId) {

try {

URL imgUrl = new URL("https://graph.facebook.com/" + userId + "/picture?type=large");

InputStream in = (InputStream) imgUrl.getContent();

Bitmap bitmap = BitmapFactory.decodeStream(in);

Bitmap output;

Rect srcRect;

if (bitmap.getWidth() > bitmap.getHeight()) {

output = Bitmap.createBitmap(bitmap.getHeight(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);

srcRect = new Rect((bitmap.getWidth()-bitmap.getHeight())/2, 0, bitmap.getWidth()+(bitmap.getWidth()-bitmap.getHeight())/2, bitmap.getHeight());

} else {

output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getWidth(), Bitmap.Config.ARGB_8888);

srcRect = new Rect(0, (bitmap.getHeight()-bitmap.getWidth())/2, bitmap.getWidth(), bitmap.getHeight()+(bitmap.getHeight()-bitmap.getWidth())/2);

}

Canvas canvas = new Canvas(output);

final int color = 0xff424242;

final Paint paint = new Paint();

final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());

float r;

if (bitmap.getWidth() > bitmap.getHeight()) {

r = bitmap.getHeight() / 2;

} else {

r = bitmap.getWidth() / 2;

}

paint.setAntiAlias(true);

canvas.drawARGB(0, 0, 0, 0);

paint.setColor(color);

canvas.drawCircle(r, r, r, paint);

paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));

canvas.drawBitmap(bitmap, srcRect, rect, paint);

return output;

} catch (IOException e) {

FirebaseCrash.report(e);

return null;

}

图像显示我的问题:

编辑:Build.gradle文件显示:

apply plugin: 'com.android.application'

android {

compileSdkVersion 23

buildToolsVersion "23.0.1"

compileOptions {

sourceCompatibility JavaVersion.VERSION_1_7

targetCompatibility JavaVersion.VERSION_1_7

}

defaultConfig {

applicationId ''

multiDexEnabled true

minSdkVersion 21

targetSdkVersion 23

versionCode 12

versionName ".12"

signingConfig signingConfigs.Tabs

}

buildTypes {

release {

minifyEnabled false

shrinkResources false

zipAlignEnabled true

debuggable false

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

signingConfig signingConfigs.Tabs

}

debug {

applicationIdSuffix ".debug"

debuggable true

minifyEnabled false

signingConfig signingConfigs.Tabs

}

}

//DatabaseReference stuff

packagingOptions {

exclude 'META-INF/LICENSE'

exclude 'META-INF/LICENSE-FIREBASE.txt'

exclude 'META-INF/NOTICE'

}

dexOptions {

javaMaxHeapSize "4g"

}

productFlavors {

}

}

java显示位图_java – 大图标位图在通知中显示为白色方块?相关推荐

  1. 大数据开发和java的前景_Java大数据开发前景好吗?

    在IT职业领域,Java一直以来都是占据着非常重要的位置的,而在进入大数据时代之后,Java也再次获得了更好的发展方向.在大数据应用开发当中,Java是重要的编程语言,学大数据需要Java基础.今天我 ...

  2. win7桌面上显示html,win7桌面图标不见了怎么办,显示Windows 7桌面图标的方法

    打开电脑发现电脑桌面没有任何图标的显示,默认的Windows 7桌面就只有一个垃圾桶,"我的电脑"."Internet Explorer图标".及"我 ...

  3. php添加网站ico图标,phpcms在地址栏中显示网站图标的方法(增加网站ico图标)

    本文关键详细介绍了phpcms在地址栏中显示信息网站图标的方式(提升网站ico图标),必须的盆友能够参照下 phpcms怎样在地址栏中显示信息网站的图标 最先寻找网站的css文件,刚开始在里面改动. ...

  4. listview显示mysql数据_C#在listview控件中显示数据库数据

    一.了解listview控件的属性 view:设置为details columns:设置列 items:设置行 1.将listview的view设置为details 2.设置列属性 点击添加,添加一列 ...

  5. Android官方开发文档Training系列课程中文版:通知用户之在通知中显示进度

    原文地址:http://android.xsoftlab.net/training/notify-user/display-progress.html#FixedProgress 通知中包含了一个进度 ...

  6. android 显示日历,如何在android的设置屏幕中显示已安装的日历列表

    您需要查询 CalendarProvider(自API级别14以来可用)的日历表以获取可用日历.以下代码段将向您展示如何: final String[] EVENT_PROJECTION = new ...

  7. java月份简写_Java如何以(MMM)格式显示一个月份的名称?

    JAVA中,如何以(MMM)格式显示一个月份的名称? 此示例显示如何使用Calender类的Calender.getInstance()方法和Formatter类的fmt.format()方法来显示( ...

  8. java biginteger 运算_Java大数字运算之BigInteger 原创

    在 Java中,有许多数字处理的类,比如Integer 类.但是Integer 类有一定的局限性,下面我们就来看看比 Integer 类更厉害的一个,BigInteger类. BigInteger类型 ...

  9. 大数据和java就业前景_java大数据开发的就业前景及未来趋势

    有这样一句话叫数据重构商业,流量改变未来.小编带你1分钟解读java大数据开发的就业前景及未来趋势,作为大数据岗位中的 "大熊猫",大数据工程师的收入待遇可以说达到了同类的顶级.j ...

最新文章

  1. HTML5之音频audio知识(部分vedio)
  2. GNU make manual 翻译( 一百八十一)
  3. 【java排序】 归并排序算法、堆排序算法
  4. java数组实验报告_Java实验一实验报告
  5. Error: .eslintrc.js » eslint-config-standard: Environment key “es2021“ is unknown 版本兼容问题
  6. 为什么会存在TIME_WAIT socket-详细分析No buffer space available
  7. 实战:kafka实现日志收集系统
  8. 协议实现objective C 协议的实现
  9. JavaScript实现中国地图圆点标注(二十四)
  10. linux多人共享桌面,gnome 开远程桌面共享功能(linux启动多个桌面)
  11. 内存的工作原理及时序介绍
  12. 深度学习NLP-词向量篇(含代码实现)
  13. 计算机蓝牙快捷键,笔记本蓝牙快捷键是什么_怎么打开笔记本电脑蓝牙-win7之家...
  14. 【Unity3d】存档与读档
  15. 微信小程序python token验证_微信小程序爬虫遇到 token 的问题
  16. ios sdk 穿山甲_iOS 穿山甲广告 SDK 的使用
  17. 第六天 01-hydra工具windows远程桌面的密码爆破
  18. 【历史上的今天】6 月 4 日:微软收购 Github;MacOS Mojave 推出;英特尔发布第四代架构 Haswell
  19. python urllib模块
  20. 通过SSH隧道连接远程MySQL-rds服务

热门文章

  1. 属性匹配工具_测试工具链——高效构建Mock服务
  2. 剑指offer:面试题14- I. 剪绳子
  3. 【Relax人生法则之躺平方法论】那些看似无足轻重 实则细思极恐的毒鸡汤
  4. Angular给HTML节点绑定自定义属性和变量,用于设置一些动态的状态变化非常有用!
  5. 在CentOS上安装TCP协议性能评测工具tcpdive
  6. 业余快速学习虚幻引擎教程
  7. ceph nautilus相对于minic的主要改动
  8. [BZOJ] 1606: [Usaco2008 Dec]Hay For Sale 购买干草
  9. 【VS开发】【电子电路技术】RJ45以太网传输线研究
  10. cf 414B Mashmokh and ACM 动态规划