Почему мой smallIcon для уведомлений всегда выделяется серым цветом?
Я попытался сделать маленький значок ровно 16x16, серо-масштабированный, ничего, кроме серого и белого (серый цвет hex
значение 616161), чтобы создать силуэт значка моего приложения.
Тем не менее, независимо от того, что оно отображается только как белый/серый квадрат в уведомлениях. Что я делаю неправильно?
(Мой min api
равен 21, если он имеет значение)
Ответы
Ответ 1
Перейдите по этой ссылке
Сначала давайте разберемся с документацией по Android, которая выглядит следующим образом:
"Обновлять или удалять ресурсы, связанные с цветом. Система игнорирует все не альфа-каналы в значках действий и в значке основного уведомления. Вы должны предположить, что эти значки будут только в альфа-формате. Система рисует значки уведомлений белым цветом и значки действий темно-серым. '
Теперь это легко пропустить, и я видел много приложений, которые есть в магазине приложений, с тысячами пользователей, которые не следовали упомянутым рекомендациям.
Итак, позвольте мне подробно объяснить, как вы можете с помощью нескольких кликов преобразовать значок уведомлений в дружественный для Android.
В вашем любимом графическом редакторе откройте файл значков. Преобразуйте все части изображения, которые вы не хотите показывать, в прозрачные пиксели. Все цвета и непрозрачные пиксели отображаются белым цветом. Давайте рассмотрим пример.
![enter image description here]()
РЕДАКТИРОВАНИЕ: Спасибо @Andrey Patseiko за инструмент tool
Ответ 2
Для уведомления вам нужно использовать разные значки для разных версий Android:
Notification notification = new Notification.Builder(context)
.setAutoCancel(true)
.setContentTitle("My notification")
.setContentText("Look, white in Lollipop, else color!")
.setSmallIcon(getNotificationIcon())
.build();
return notification;
Получить значок уведомления на основе версии
private int getNotificationIcon() {
boolean useWhiteIcon = (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP);
return useWhiteIcon ? R.drawable.icon_silhouette : R.drawable.ic_launcher;
}
Ответ 3
Наряду с новыми функциями и возможностями Android 5.0 включает в себя множество изменений в системе и изменения поведения API. Pl. перейдите в изменения поведения уведомлений.
Уведомления рисуются темным текстом поверх белого (или очень легким) фоны в соответствии с новыми виджетами дизайна материалов. Убедись, что все ваши уведомления выглядят правильно с новой цветовой схемой. Если ваш уведомления выглядят неправильно, исправьте их:
- Используйте
setColor()
, чтобы установить цвет акцента в круге за изображением значка. - Обновление или удаление активов, которые включают цвет. Система игнорирует все не-альфа-каналы в значках действий и в главном значке уведомления. Вы должны предположить, что эти значки будут только альфа-. Система рисует значки уведомлений в белом и значки действий в темно-сером цвете.
Итак, в основном вы должны использовать значки silhouette в качестве значка уведомления для уровня API уровня 21 +