Почему мой smallIcon для уведомлений всегда серым цветом?

Я попытался сделать маленький значок точно 16x16, серый масштаб, ничего, кроме серого и белого (серый цветhex value 616161), чтобы создать силуэт моего значка приложения.

но независимо от того, что он просто отображается как белый/серый квадрат в уведомлениях. Что я делаю не так?

(мой мин api равно 21, если предположить, что это актуально)

3 ответов


соблюдать этой ссылке

сначала давайте разберемся в документации Android, который выглядит следующим образом

"обновление или удаление активов, которые включают цвет. Система игнорирует все не альфа-каналы в значках действий и в главном значке уведомлений. Вы должны предположить, что эти значки будут Альфа-только. Система рисует значки уведомлений в белом и значки действий в темно-сером цвете."

теперь это легко пропустить и я видел много приложений, которые живут в App Store с тысячами пользователей, которые не следуют указанным рекомендациям.

поэтому позвольте мне подробно объяснить, как вы можете конвертировать значок уведомления в Android дружественный один с помощью нескольких щелчков мыши.

в вашем любимом редакторе изображений откройте файл значка. Конвертировать все части изображения, которые вы не хотите показывать прозрачные пиксели. Все цвета и непрозрачные пиксели отображаются белым цветом. Давайте пройдем через образец.

enter image description here

вы можете спросить дизайнера или использовать это инструмент создать значок


для уведомления вы должны использовать различные значки для разных версий 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;
}

наряду с новыми функциями и возможностями, Android 5.0 включает в себя различные системные изменения и изменения поведения API. Польша. пройдите через уведомления изменения поведения.

уведомления рисуются с темным текстом поверх белого (или очень светлого) фон, чтобы соответствовать новым виджетам material design. Убедитесь, что все ваши уведомления выглядят правильно с новой цветовой схемой. Если ваш уведомления выглядят неправильно, исправить их:

  • использовать setColor() чтобы установить цвет акцента в круге за изображением значка.
  • обновление или удаление активов, которые включают цвет. Система игнорирует все не альфа-каналы в значках действий и в главном значке уведомлений. Вы должны предположить, что эти значки будут Альфа-только. Система рисует значки уведомлений в белом и значки действий в темно-сером цвете.

так, в основном вы должны использовать силуэт значки как значок уведомления для уровня API 21+