android轉場動畫windowAnimation和ActivityAnimation的區別

顯而易見,window與Activity自己從名字上就知道不一樣,但對於項目開發中 windowAnimation和ActivityAnimation的區別必須心照不宣。java

區別主要以下android

1.windowAnimation包括windowEnterAnimationwindowExitAnimation;ActivityAnimation包含android:activityOpenEnterAnimationandroid:activityOpenExitAnimationandroid:activityCloseEnterAnimationandroid: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中,後者使用代碼編寫

相關文章
相關標籤/搜索