Я пытаюсь использовать в своем приложении передовые методы управления светлым и темным режимом на основе указаний здесь и здесь .
Исходя из этого, Я использую тему, унаследованную от DayNight
:
В манифесте:
<application
android:theme="@style/Theme.MyApp"
</application>
В темах. xml:
<style name="Theme.MyApp" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorButtonNormal">@color/colorButtonNormal</item>
</style>
Это имеет желаемый эффект открытия Activity в светлой или темной теме, основанной на системных настройках устройства.
Но я хочу дать пользователю возможность переопределить режим, например, чтобы он всегда был темным (даже если система в легком режиме).
Но когда система находится в легком режиме, я обнаружил, что моя активность первоначально открывается со светлой темой (fla sh белого цвета), прежде чем я получаю возможность переключиться на темную тему. Я переключаюсь, как только могу, в жизненном цикле Активности:
@Override
protected void onCreate(Bundle savedInstanceState) {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
super.onCreate(savedInstanceState);
// ...
Но даже тогда я получаю раздражающий "fla sh света", прежде чем Активность переключится на темноту.
Как мне избежать вспышки sh света?