Przejście/animacja powoduje, że motyw zmienia się płynnie po ponownym uruchomieniu działania, a można tego dokonać dodając elementy "android: windowanimationStyle" do motywów, a następnie odwołując się do stylu, w którym określa się sposób animacji działania. kiedy wchodzi i wychodzi. Należy pamiętać, że powoduje to zastosowanie animacji we wszystkich działaniach związanych z tym tematem.
<style name="AppThemeLight" parent="Theme.AppCompat.Light">
<!-- Customize your theme here. -->
<item name="android:windowAnimationStyle">@style/WindowAnimationTransition</item>
</style>
<style name="AppThemeDark" parent="Theme.AppCompat">
<!-- Customize your theme here. -->
<item name="android:windowAnimationStyle">@style/WindowAnimationTransition</item>
</style>
<!-- This will set the fade in animation on all your activities by default -->
<style name="WindowAnimationTransition">
<item name="android:windowEnterAnimation">@android:anim/fade_in</item>
<item name="android:windowExitAnimation">@android:anim/fade_out</item>
</style>
Potem, gdy chcesz zmienić motyw, który może to zrobić po kliknięciu przycisku:
AppSettings settings = AppSettings.getInstance(this);
settings.set(AppSettings.Key.USE_DARK_THEME,
!settings.getBoolean(AppSettings.Key.USE_DARK_THEME));
Intent intent = new Intent(this, <yourclass>.class);
startActivity(intent);
finish();
Następnie w metodzie onCreate
, korzystania z setTheme()
aby zastosować motyw, który jest aktualnie ustawiony w AppSettings tak:
AppSettings settings = AppSettings.getInstance(this);
setTheme(settings.getBoolean(AppSettings.Key.USE_DARK_THEME) ? R.style.AppThemeDark : R.style.AppThemeLight);
super.onCreate(savedInstanceState);
setContentView(<yourlayouthere>);
Sprawdź to GIST dla odniesienia: https://gist.github.com/alphamu/f2469c28e17b24114fe5
jest wideo to prawdziwa aplikacja? – Blackbelt
@ Blackbelt Tak, nagrałem wideo/gif. Aplikacja nazywa się "Zhihu". – user1032613
Hej przyjacielu, czy znalazłeś solutin do zmiany tematu jak zhihu? –