Настройка темной или светлой темы приложения по выбору пользователя (Android) - PullRequest
2 голосов
/ 10 июля 2019

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

finish();
startActivity(new Intent(this, MainActivity.class)
                    .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK));
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out)

Это оставляет фон, который мы установили для темы приложения в манифесте , который выглядит следующим образом:

<activity
    android:name=".MainActivity"
    android:theme="@style/MyStyle_Light" />

где стили выглядят примерно так:

<style android:name="MyStyle_Light" parent="Theme.AppCompat.Light">
     <!-- some style resources -->
</style>

<style android:name"MyStyle_Dark" parent="Theme.AppCompat">
     <!-- some style resources -->
</style>

Теперь стиль Theme.AppCompat.Light имеет светлый фон на своем окне.Он определяется внутри действия из AndroidManifest.xml .

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

@Override
public void onCreate()
{
    setTheme(R.style.MyStyle_Dark); // can also be MyStyle_Light depending on user choice
    super.onCreate();
    setContentView(R.layout.MyLayout);

    // rest goes on
}

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

Как изменить цвет фона, который исходит из манифеста?

Вещи, которые ядо сих пор пробовал или думал:

  1. Использование "android: windowBackground", которое не работает,
  2. Установка темы в классе приложения без использованиятема в манифесте, которая также не работает.
  3. Использование атрибута в манифесте для изменения стилей во время выполнения из .xml, который, я не думаю, будет работать, так как не к чему обращаться,(Только что попробовал, это не работает.)
  4. Использование дублированного действия с другим ресурсом темы, прикрепленным к манифесту, и запуск его в зависимости от выбора пользователя (мне кажется, не нужен)

Любое предложение приветствуется, спасибо.

...