蜂窝通知 - 如何将largeIcon设置为正确的大小?

时间:2011-08-28 11:46:33

标签: android android-3.0-honeycomb android-notifications

我发现自己好奇为什么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版本,它们需要具有哪些大小?我可以在文档中看到没有提及,或者在浏览更广泛的网络之后。

2 个答案:

答案 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设置了一个大图标。