android轉場動畫windowAnimation和ActivityAnimation的區別
顯而易見,window與Activity本身從名字上就知道不同,但對於項目開發中 windowAnimation和ActivityAnimation的區別必須心領神會。
區別主要如下
1.windowAnimation包括 windowEnterAnimation 和 windowExitAnimation ;ActivityAnimation包含 android:activityOpenEnterAnimation , android:activityOpenExitAnimation , android:activityCloseEnterAnimation 和 android:activityCloseExitAnimation
2.在項目中WindowAnimation的控制權大於Activity的控制權,即在Activity轉場過程中,如果同時設置了WindowAnimation和ActivityAnimation,那么 可能(因為這種情況非常多) 只會執行WindowAnimation
3.對於WindowAnimation的定義很簡單,在style.xml文件中只需要繼承Animation Style即可
<style name="Animation" parent="@android:style/Animation"> <!--窗體進入動畫--> <item name="android:windowEnterAnimation">@anim/slide_left_enter</item> <!--窗體退出動畫--> <item name="android:windowExitAnimation">@anim/slide_right_exit</item> </style>
對於Activity,需要繼承Animation Activity Style
<style name="FeelyouWindowAnimTheme" parent="@android:style/Animation.Activity"> <item name="android:activityOpenEnterAnimation">@android:anim/slide_in_left</item> <item name="android:activityOpenExitAnimation">@android:anim/slide_out_right</item> <item name="android:activityCloseEnterAnimation">@anim/push_right_in</item> <item name="android:activityCloseExitAnimation">@anim/push_left_out</item> </style>
當我們從 A1 啟動 A2 時,A1 從屏幕上消失,這個動畫叫做 android:activityOpenExitAnimation 當我們從 A1 啟動 A2 時,A2 出現在屏幕上,這個動畫叫做 android:activityOpenEnterAnimation 當我們從 A2 退出回到 A1 時,A2 從屏幕上消失,這個叫做 android:activityCloseExitAnimation 當我們從 A2 退出回到 A1 時,A1 出現在屏幕上,這個叫做 android:activityCloseEnterAnimation
從上述2中動畫的定義上來看,顯然ActivityAnimation更為復雜,但這種復雜帶來的轉場效果非常好,可以同時控制2個Activity的動畫,而不像WindowAnimation只能控制下一個Activity的窗體動畫。
5.在開發中,窗體動畫也可以使用 Activity. overridePendingTransition來設置,也可以定義在主題中,但Activity只能使用在主題中
<application android:name="test.view.weitop.BaseApplication" android:allowBackup="false" android:hardwareAccelerated="false" android:icon="@drawable/app_logo" android:label="@string/app_name" android:largeHeap="true" android:theme="@style/Theme.App" > </application>
6.對於比較追求界面美感的動畫,使用ActivityAnimation要好得多,因此對於一般開發使用windowAnimation即可,但對於追求用戶體驗,那么直接使用Activity Animation 吧