【问题标题】:Honeycomb notifications - How to set largeIcon to the right size?蜂窝通知 - 如何将 largeIcon 设置为正确的大小?
【发布时间】:2011-08-28 11:46:33
【问题描述】:

我发现自己很好奇为什么 Notification.Builder 上的 setLargeIcon 方法只接受位图,而没有重载来提供资源 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();

遗憾的是,通知中提供的位图未按比例缩放,因此需要为通知视图提供正确大小的位图。

假设我需要提供 xhdpi、hdpi、mdpi 和 ldpi 版本的 largeIcon 位图,它们需要多大的尺寸?在文档中或在搜索更广泛的网络之后,我看不到任何提及。

【问题讨论】:

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


    【解决方案1】:

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

    应该能够在将图像设置在通知上之前使用它们来缩放图像。

    【讨论】:

    • 啊,这很有趣。你知道这些值的单位是什么(17104902、17104901)吗?
    • 它们很可能是 xml 中的 dp。当您使用资源时。 getDimensionPixelSize() 你会得到它们的像素。
    • 谢谢大家。这很好地解决了问题。我认为它需要位图而不是 resId 的原因是它是为社交媒体使用而设计的,而且人们的面孔通常不会随应用程序一起分发。宽度 = res.getDimensionPixelSize(android.R.dimen.notification_large_icon_width)
    • 所以最好的解决方案是:int width = getResources().getDimensionPixelSize(android.R.dimen.notification_large_icon_width);int height = getResources().getDimensionPixelSize(android.R.dimen.notification_large_icon_height);
    【解决方案2】:

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

    【讨论】:

    • 这个答案完成了整个画面。谢谢!
    • 您可以考虑将结果存储到一个新的变量 Bitmap scaledContactPic 并添加 if(!contactPic.equals(scaledContactPic)){ contactPic.recycle(); }
    猜你喜欢
    • 2018-06-20
    • 2020-09-26
    • 2016-11-30
    • 1970-01-01
    • 2018-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多