web-dev-qa-db-ja.com

ハニカム通知-largeIconを適切なサイズに設定する方法

Notification.BuilderのsetLargeIconメソッドがビットマップのみを受け入れ、リソース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バージョンを提供する必要があると仮定すると、それらのサイズはどのくらい必要ですか?私はドキュメントで、またはより広いウェブを精査した後に言及を見ることができません。

45
Ollie C

まだ確認する機会はありませんでしたが、API 11は次のパブリックディメンションを導入しました。

通知に設定する前に、それらを使用して画像を拡大縮小できるはずです。

62
crafty

通知の大きなアイコンの寸法 を使用して、スケーリングされたビットマップを作成しました

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); 

次に、このスケーリングされたビットアンプで大きなアイコンを設定します。

61
toobsco42