45

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

残念ながら、提供されるビットマップは通知でスケーリングされないため、ビットマップは通知ビューに正確に適切なサイズで提供する必要があります。

largeIconビットマップのxhdpi、hdpi、mdpi、およびldpiバージョンを提供する必要があるとすると、それらはどのサイズである必要がありますか?私はドキュメントで、またはより広いウェブを精査した後、言及を見ることができません。

4

2 に答える 2

62

まだ確認する機会はありませんでしたが、API 11 では次の公開ディメンションが導入されました。

通知に設定する前に、それらを使用して画像をスケーリングできるはずです。

于 2011-08-28T17:04:30.163 に答える
61

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

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

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

于 2013-01-21T18:38:02.367 に答える