Soru Honeycomb bildirimleri - Büyük boyutta doğru boyuta nasıl ayarlanır?


Notification.Builder üzerindeki setLargeIcon yönteminin neden kaynak kimliği sağlamak için aşırı yüklenme yapmadan sadece bir Bitmap kabul ettiğini merak ediyorum. Belki performans nedenleriyle yapıldı, ancak setSmallIcon res çizilebilir bir kimlik kabul ettiği gibi garip görünüyor.

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

Ne yazık ki, sağlanan bitmap bildirimde ölçeklenmez, bu nedenle Bitmap'in bildirim görünümü için tam olarak doğru boyutta olması gerekir.

LargeIcon bitmap'in xhdpi, hdpi, mdpi ve ldpi sürümlerini sağladığımı varsayarsak, hangi boyutlarda olmalılar? Dokümanlarda ya da daha geniş bir ağı temizledikten sonra hiç bir şey göremiyorum.


44
2017-08-28 11:46


Menşei




Cevaplar:


Henüz kontrol etme şansı olmadı, ancak API 11 aşağıdaki kamu boyutlarını tanıttı:

Bildirimde ayarlamadan önce görüntünüzü ölçeklendirmek için bunları kullanabilmelidir.


60
2017-08-28 17:04



Ah, bu ilginç. Bu değerlerin hangi birimlerde olduğunu biliyor musunuz (17104902, 17104901)? - Ollie C
Bunlar büyük ihtimalle xml'de dp'dir. Kaynaklar'ı kullandığınızda. getDimensionPixelSize () onları px'de alırsınız. - alexanderblom
Teşekkürler beyler. Bu iyi hile yapar. Bir sosyal medya kullanımı için tasarlanmış bir Bitmap gerekmediğini ve insanların yüzlerinin genellikle uygulama ile dağıtılmayacağını düşünüyorum. width = res.getDimensionPixelSize (android.R.dimen.notification_large_icon_width) - Ollie C
Bu 64dp x 64dp github.com/android/platform_frameworks_base/blob/master/core/... - Jeroen
Yani en iyi çözüm: int width = getResources().getDimensionPixelSize(android.R.dimen.notification_large_icon_width);  int height = getResources().getDimensionPixelSize(android.R.dimen.notification_large_icon_height); - Paul Woitaschek


Kullandım Bildirimin büyük simgesinin boyutları ölçekli bir bitmap oluşturmak için

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

Ve sonra bu ölçeklendirilmiş bitamp ile büyük simgeyi ayarlıyorum.


60
2018-01-21 18:38



Bu cevap tüm resmi tamamlar. Teşekkürler! - iHearGeoff
Sonucu yeni bir Bitmap scaledContactPic değişkenine kaydetmeyi ve eğer (! ContactPic.equals (ölçeklenmişContactPic)) {contactPic.recycle (); } - malinjir