顯而易見,window與Activity自己從名字上就知道不一樣,但對於項目開發中 windowAnimation和ActivityAnimation的區別必須心照不宣。java
區別主要以下android
1.windowAnimation包括windowEnterAnimation和windowExitAnimation;ActivityAnimation包含android:activityOpenEnterAnimation,android:activityOpenExitAnimation,android:activityCloseEnterAnimation和android:activityCloseExitAnimationapp
2.在項目中WindowAnimation的控制權大於Activity的控制權,即在Activity轉場過程當中,若是同時設置了WindowAnimation和ActivityAnimation,那麼可能(由於這種狀況很是多)只會執行WindowAnimationide
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的窗體動畫。spa
5.在開發中,窗體動畫也可使用 Activity.overridePendingTransition來設置,也能夠定義在主題中,但Activity只能使用在主題中.net
<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 吧code
這裏分享了一篇關於Activity動畫的研究博客:http://www.oschina.net/question/97118_34343 xml
-------------------------------------------------2014-12-27新增內容------------
Android佈局動畫,所謂佈局動畫並非指專門做用在ViewGroup上的動畫,而是做用到不居中的Child的有序動畫
1.LayoutAnimationController --->第三方控件 WheelView的核心部分
ScaleAnimation sa =new ScaleAnimation(0.5f, 1f, 0.5f, 1f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); sa.setDuration(2000); LayoutAnimationController lac = new LayoutAnimationController(sa, 0.5f); lac.setOrder(LayoutAnimationController.ORDER_REVERSE); rootView.setLayoutAnimation(lac);
2.android:animateLayoutChanges="true"
表示佈局中childView的的大小改變,刪除,增長時的 fade in 或者 fade out的動畫
3.android:layoutAnimation="@anim/listview_anim"
android:layoutAnimation 和LayoutAnimationController做用相似,不一樣點在於,前者定義在xml中,後者使用代碼編寫