Вспышка при переходе в темный / светлый режим динамически

#android #android-9.0-pie #android-night-mode

#Android #android-9.0-pie #android-ночной режим

Вопрос:

У меня есть требование, чтобы при нажатии переключателя мне нужно было инвертировать режим с темного на светлый и наоборот соответственно. Но суть в том, что я не хочу завершать действие и перезапускать его, поскольку я не хочу, чтобы вспышка / мерцание активного отдыха были замечены пользователем. Следовательно, я использую Activity.this.recreate() . Теперь это хорошо работает на всех уровнях API и телефонах, которые я проверил до сих пор. Но в Android Pie он показывает вид вспышки даже при использовании Activity.this.recreate()

Кто-нибудь, пожалуйста, предложите мне какой-нибудь способ решить проблему в Android Pie или какой-нибудь лучший способ решить мою проблему.

Комментарии:

1. Вы можете перезапустить свою деятельность в обычном finish режиме, а затем вызвать, а затем вызвать startActivity() overridePendingTransition() и передать требуемую анимацию. например, (fade in, fade out)

2. Это не помогает.

Ответ №1:

Да, вы правы, что он мигает в Android Pie (9.0), когда мы используем метод «воссоздать ()» для повторного запуска активности. Чтобы решить эту проблему, мы можем сделать, как показано ниже, я успешно протестировал ее с Android Pie (9.0) и удалил вспышку.

Используйте «Переопределение перехода (0,0)» и начните самостоятельную работу без использования метода «воссоздать ()».

Вот код:

 var intent = Intent(this@MainActivity, MainActivity::class.java)
startActivity(intent)
overridePendingTransition(0,0)
  

Комментарии:

1. Этот ответ неверен, он сохраняет старое действие в фоновом режиме, поскольку finish(); оно никогда не вызывается для текущего действия, что приведет к возврату проблемы «flash» после ее использования, возвращаясь к проблеме, указанной в вопросе.