В настоящее время я предоставляю 2 темы в своем приложении, основываясь на последнем выборе пользователя - темной теме и легкой теме.Самый быстрый способ изменить тему во время запуска приложения
Во время запуска основной деятельности я сделаю следующее.
public class MyFragmentActivity extends FragmentActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
// getUserLastThemeChoice will either return R.style.Theme_My_Light or
// R.style.Theme_My_Dark.
this.setTheme(getUserLastThemeChoice());
super.onCreate(savedInstanceState);
В моей AndroidManifest.xml
я следующее
<application
...
android:theme="@style/Theme.My.Dark" >
В связи с жестко заданным значением в AndroidManifest.xml
, если пользователь предыдущий выбор свет тема, я наблюдал следующее.
- App начать с темной темой, из-за
AndroidManifest.xml
- времени ...
- App изменится на белую тему из-за
this.setTheme
в главномActivity
там никак может избежать такого наблюдения перехода? Вот и все, просто представляйте пользователю напрямую, основываясь на их последнем выборе.
p/s Примечание. Это не поможет, если вы удалите информацию о теме из манифеста. Поскольку по умолчанию система будет использовать голограмму темную. Вы по-прежнему будете наблюдать переход, особенно в медленном устройстве.
Что произойдет, если вы удалите назначение темы в манифесте? –
Вы по-прежнему наблюдаете переход. Поскольку система будет использовать голограмму по умолчанию. –
Хммм ... так что вам нужно что-то увидеть.И если вы попробуете нейтральную тему, чтобы показать, скажем, Splash Screen, а затем применить свою тему и запустить основное приложение? Может быть, идея? –