Před časem jsem u jednoho Android projektu potřebovala deaktivovat defaultní animace aktivity, která je přímo v Android frameworku nadefinovaná na “slide-in” animaci zprava doleva. Vzhledem k tomu, že se mi nepodařilo vygooglit žádné rozumné řešení, přišla mi vhod rada od @ondraz, kterou alespoň formou tohoto článku zanechám příštím generacím.
Každá aktivita má totiž nějaké téma (theme) a to má přímo v Android Frameworku nadefinované atributy vztahující se k animacím, které je možné definováním vlastního tématu přepsat. V řeči XML to vypadalo nějak takto:
<style name="NoAnimationTheme" parent="ParentTheme">
<item name="android:windowAnimationStyle">@null</item>
</style>
Předchozí kus kódu stačí umístit do themes.xml. V mém případě měla aktivita už vlastní téma nadefinované (ParentTheme), které nové téma dědí pro zachování všech ostatních atributů. V Android Manifestu je pak aktivitám, které mají být bez animace, potřeba přidat následující řádek.
android:theme="@style/NoAnimationTheme"
nebo stačí přidat do intentu, který spouští aktivitu, tenhle flag Intent.FLAG_ACTIVITY_NO_ANIMATION;
Martin Pelant
August 13th, 2011
Ano, coz zrusilo animaci pri prvnim vytvoreni aktivity, ale uz ne kdyz se na ni aplikace pozdeji presla (ono v tomto pripade byl problem jeste v tom, ze slo o custom implementaci tabu) cili tohle nestacilo stejne jako nic jineho, co se da jednim jednoduchym dotazem vykuchat z Google. Proto tenhle clanek
AlenKa
August 13th, 2011
Polština vede.
překlad polština
February 4th, 2012