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

我发现自己好奇为什么Notification.Builder上的setLargeIcon方法只接受一个Bitmap,没有提供资源id的重载。 也许这是出于性能的原因,但它看起来很奇怪,因为setSmallIcon确实接受一个res可绘制的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版本,他们需要什么大小? 我看不到在文档中,或者在search更广泛的网页之后。

没有机会检查它,但API 11引入了以下公共维度:

  • notification_large_icon_height
  • notification_large_icon_width

在设置通知之前,应该能够使用这些缩放图像。

我使用通知的大图标的尺寸来创build缩放的位图

 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设置大图标。