Tôi thấy mình tò mò tại sao phương thức setLargeIcon trên Notification.Builder chỉ chấp nhận một Bitmap, không có quá tải để cung cấp một id tài nguyên. Có lẽ nó đã được thực hiện vì lý do hiệu suất, nhưng nó có vẻ kỳ lạ như setSmallIcon không chấp nhận một id resable res.Thông báo về tổ ong - Cách đặt largeIcon thành đúng kích cỡ?
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();
Đáng buồn là bitmap được cung cấp không được chia tỷ lệ trong thông báo, do đó Bitmap cần được cung cấp đúng kích cỡ cho chế độ xem thông báo.
Giả sử tôi cần cung cấp các phiên bản xhdpi, hdpi, mdpi và ldpi của bitmap largeIcon, chúng cần phải có kích thước nào? Tôi có thể thấy không có đề cập trong tài liệu, hoặc sau khi cọ rửa các trang web rộng lớn hơn.
Ah, điều đó thật thú vị. Bạn có biết những đơn vị đó có giá trị nào không (17104902, 17104901)? –
Chúng rất có thể là dp trong xml. Khi bạn sử dụng Tài nguyên. getDimensionPixelSize() bạn sẽ nhận được chúng trong px. – alexanderblom
Xin cảm ơn các bạn. Điều này thực hiện các trick độc đáo. Tôi tìm lý do nó đòi hỏi một Bitmap không phải là một resId là nó được thiết kế để sử dụng phương tiện truyền thông xã hội, và khuôn mặt của người dân sẽ không thường được phân phối với các ứng dụng. width = res.getDimensionPixelSize (android.R.dimen.notification_large_icon_width) –