Можно ли получить поддержку темного режима Android для значков приложений?

Я пробую использовать поддержку темного режима для Android 10 для своего приложения. Я могу работать со всеми другими вещами в темном режиме, кроме значка запуска приложений.

Для справки я использовал ссылку ниже

https://developer.android.com/guide/topics/ui/look-and-feel/darktheme

Я знаю, что такого упоминания об изменении значка приложения при смене темы День / Ночь нет.

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

Заранее спасибо.

8 ответов

Вы проверяли раздел " Темы и стили " в документации?

В ваших темах и стилях не следует использовать жестко заданные цвета или значки, предназначенные для использования в светлой теме. Вместо этого вы должны использовать атрибуты темы (предпочтительно) или ресурсы с указанием ночи.

Вот два наиболее важных атрибута темы, о которых следует знать:

?android:attr/textColorPrimaryЭто цвет текста общего назначения. Он почти черный в светлой теме и почти белый в темной теме. Он содержит отключенное состояние.

?attr/colorControlNormalЦвет значка общего назначения. Он содержит отключенное состояние.

Итак ?android:attr/textColorPrimary а также ?attr/colorControlNormalбудет меняться в зависимости от темы (черный -> бело-белый -> черный). Я предполагаю, что мы можем установить эти цвета какandroid:tintсвойство для достижения темной / белой темы для векторных иконок. Минус в том, что ваши значки должны быть только черно-белыми.

Чтобы перейти в темный режим для значков в Android:

  1. Создайте отдельную папку ресурсов с именем values-night
  2. Внутри папки values-night определите вашу ночную тему (например, theme.xml)
  3. Определите все желаемые цвета в темном режиме внутри theme.xml
  4. Теперь внутри вашего значка для рисования определите атрибут оттенка значка следующим образом:
  5. <vector android:height="24dp" android:tint="?attr/colorPrimaryDark" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp"
  6. Используя приведенный выше код, цвет значка изменится в зависимости от цветов, определенных в темах темного и светлого режима в вашем проекте.

Фотографий:

  1. Res папка значения-ночь

  2. определите свою тему темного режима

  3. изменить атрибут оттенка значков ваших значков

  4. световой режим

  5. Темный режим

Думаю, возможно, просто лаунчер не поддерживает его отображение.

Кстати, я создал новый цветовой ресурс в values-night и values, например:

<!-- values-night/colors.xml -->
<color name="icon_background">#000000</color>
<!-- values/colors.xml -->
<color name="icon_background">#FFFFFF</color>

Затем установите цвет фона в значок приложения:

<!-- mipmap/ic_launcher.xml -->
...
<background android:drawable="@color/icon_background" />
...
<!-- mipmap/ic_launcher_round.xml -->
...
<background android:drawable="@color/icon_background" />
...

Значок приложения теперь изменяется при переключении темного режима..., но только для приложений более ярких (значок отображается в верхней части окна), но Lancher не обновляется... Я тестировал Android 11 на телефоне Pixel 4XL (с помощью Google Launcher).

Кто-нибудь еще?

Нет, значок приложения не поддерживает темный режим.

Помимо значка приложения, можно изменить цвет других изображений:

Попробуйте использовать

      android:drawableTint="@color/black" 

ИЛИ

      app:tint="@color/black"

с желаемым изображением.

PS: (Атрибут drawableTint используется только на уровне API 23 и выше)

Темный режим не поддерживается для значков приложений (значков запуска).

Причина этого:

Некоторые квалификаторы ресурсов, такие как локаль/плотность/код версии, не меняются при повседневном использовании, и поддерживается смена значков на них. Но мы не рекомендуем изменять значки и метки приложений на основе часто меняющихся параметров, и это не поддерживается в большинстве мест пользовательского интерфейса системы. Пользователи создают карту памяти между приложениями и соответствующими им значками/ярлыками. Частое их изменение мешает пользователю.

По этому поводу в Google зарегистрирована проблема, и решение таково:

Не исправить (предполагаемое поведение)

Трекер проблем: https://issuetracker.google.com/issues/147521650?pli=1 .

Попробуй добавить mipmap-anydpi-v26 & mipmap-night-anydpi-v26значки в исходном коде. Я пытался добавить, но немного глючит. Теоретически иконки поддерживают темную тему XDВот пример

Что ж, вы можете использовать цвета ресурса ure. Добавьте вариант ночного режима (значения правой кнопкой мыши, New -> Values ​​resource file, установите имя файла "colors" и квалификатор "Night mode". Вы можете сделать вариант drawable специально, если хотите.

Главный недостаток - нестабильность. Я не знаю, только ли это я, но у меня странное поведение в эмуляторе (извините, сейчас не могу протестировать на устройстве). Сразу после установки значок устанавливается в правильный режим, но когда вы меняете на другой, он не обновляется. Однако когда вы пытаетесь переместить значок, он использует текущую вариацию темы.

Другие вопросы по тегам