Биометрический запрос с темой DayNight

Тема DayNight имеет четыре варианта:

  1. Устройство - режим ТЕМНЫЙ, приложение - режим ТЕМНЫЙ.
  2. Устройство - режим СВЕТ, приложение - режим СВЕТ.
  3. Устройство - режим ТЕМНЫЙ, приложение - режим СВЕТЛЫЙ.
  4. Устройство - режим СВЕТЛЫЙ, приложение - режим ТЕМНЫЙ.

Первый и второй случаи - это нормально. К сожалению, в третьем и четвертом случаях все не так, как ожидалось. Диалоговое окно BiometricPrompt для перехода в режим пользовательского интерфейса устройства. Я хочу применить режим пользовательского интерфейса приложения для диалога BiometricPrompt. Вы можете увидеть проблему ниже:

Устройство - режим ТЕМНЫЙ, приложение - СВЕТЛЫЙ режим  Устройство - режим ** ТЕМНЫЙ **, приложение - ** режим СВЕТЛЫЙ **

Устройство - режим СВЕТЛЫЙ, приложение - режим ТЕМНЫЙ  Устройство - режим ** СВЕТЛЫЙ **, приложение - режим ** ТЕМНЫЙ **


person Akbar    schedule 12.06.2020    source источник
comment
Я бы также сказал, что текст под значком плохо читается в темном режиме (wtf google)   -  person joe1806772    schedule 02.11.2020


Ответы (1)


Интересный вопрос!

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

Некоторые ресурсы, которые нужно проверить, и они составляют основу моего ответа: https://developer.android.com/guide/topics/ui/look-and-feel/darktheme

https://cs.android.com/androidx/platform/frameworks/support/+/androidx-master-dev:biometric/biometric/src/main/java/androidx/biometric/

Немного предыстории:

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

  2. Макет не настроен на наследование от night-theme (работа активности)

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

  4. Изменение конфигурации uiMode автоматически восстанавливает активность

Мой ответ:

Из-за высокого приоритета аутентификации пользователя диалоговому окну аутентификации отдается приоритет над действиями в качестве устройства, в то время как действиям, стоящим за диалоговым окном, делегируется роль приложения. Непонятно, почему и как это происходит. Я бы попытался переключить роли устройства и приложения на протяжении всей реализации темы DayNight.

person Matthew McDonald    schedule 01.08.2020