La transizione/animazione rende il tema senza interruzioni quando si riavvia l'attività, e questo può essere fatto aggiungendo gli elementi "android: windowanimationStyle" ai temi, quindi facendo riferimento a uno stile in cui si specifica come deve animare l'attività quando entra ed esce. Nota che questo rende l'animazione applicabile a tutte le attività con quel tema.
<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>
Poi, quando si desidera cambiare il tema si potrebbe fare questo quando si fa clic su un pulsante:
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();
Poi nel metodo onCreate
, utilizzare il setTheme()
per applicare il tema che è attualmente impostato in AppSettings in questo modo:
AppSettings settings = AppSettings.getInstance(this);
setTheme(settings.getBoolean(AppSettings.Key.USE_DARK_THEME) ? R.style.AppThemeDark : R.style.AppThemeLight);
super.onCreate(savedInstanceState);
setContentView(<yourlayouthere>);
Dai un'occhiata a questo succo di riferimento: https://gist.github.com/alphamu/f2469c28e17b24114fe5
fonte
2016-02-17 10:05:52
è il video è una vera applicazione? – Blackbelt
@Blackbelt Sì, ho registrato il video/gif. L'app si chiama "Zhihu". – user1032613
ehi amico, hai trovato la soluzione per cambiare tema come zhihu? –