我发现自己好奇为什么Notification.Builder上的setLargeIcon方法只接受一个Bitmap,没有重载来提供资源ID。也许这是出于性能原因而做的,但似乎很奇怪,因为setSmallIcon确实接受了res drawable id。
Notification.Builder builder = new Notification.Builder(application);
// ....
builder.setLargeIcon(iconBitmap); // Requires a Bitmap
builder.setSmallIcon(iconResId); // Requires a drawable resource ID
Notification notification = builder.getNotification();
遗憾的是,提供的位图未在通知中缩放,因此需要为通知视图提供恰当尺寸的位图。
假设我需要提供largeIcon位图的xhdpi,hdpi,mdpi和ldpi版本,它们需要具有哪些大小?我可以在文档中看到没有提及,或者在浏览更广泛的网络之后。
答案 0 :(得分:61)
还没有机会检查它,但API 11引入了以下公共维度:
在通知设置之前,应该可以使用它们来缩放图像。
答案 1 :(得分:60)
我使用dimensions of the notification's large icon创建了缩放位图
BitmapDrawable contactPicDrawable = (BitmapDrawable) ContactsUtils.getContactPic(mContext, contactId);
Bitmap contactPic = contactPicDrawable.getBitmap();
Resources res = mContext.getResources();
int height = (int) res.getDimension(android.R.dimen.notification_large_icon_height);
int width = (int) res.getDimension(android.R.dimen.notification_large_icon_width);
contactPic = Bitmap.createScaledBitmap(contactPic, width, height, false);
然后我用这个缩放的bitamp设置了一个大图标。