蜂窝通知 – 如何将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设置大图标。