使用和管理Android中Activity的切換動畫(二)

下面就一個簡單的例子說明怎麼定義包含Activity切換動畫的主題。

         首先,我們先看一下包含動畫的主題是怎麼定義的。在R.values文件夾中新建一個style.xml的文件,在其中插入一個<style />節點,聲明一個主題,代碼如下:

R.values.style:

Xml代碼  收藏代碼
  1. <style name="Activity.Theme" mce_bogus="1" parent="@android:style/Theme.NoTitleBar">  
  2.     <item name="android:windowAnimationStyle">@style/anim_activity</item>  
  3. </style>  

 可以看到,以上主題的父主題是@android:style/Theme.NoTitleBar, 就是繼承自系統主題的大部分屬性。

其中有一個"android:windowAnimationStyle"屬性是由我們自定義的,定位的位置同樣在R.values.style文件中。代碼如下:

Xml代碼  收藏代碼
  1. <style name="anim_activity" mce_bogus="1" parent="@android:style/Animation.Activity">  
  2.     <item name="android:activityOpenEnterAnimation">@anim/activity_open_in_anim</item>  
  3.     <item name="android:activityOpenExitAnimation">@anim/activity_open_out_anim</item>  
  4.     <item name="android:activityCloseEnterAnimation">@anim/activity_close_in_anim</item>  
  5.     <item name="android:activityCloseExitAnimation">@anim/activity_close_out_anim</item>  
  6. </style>  

 現在假設有兩個Activity, A 和 B。 在A中可以啓動B. 同時,A,B的theme屬性均設置爲上面定義的屬性。那麼,以上動畫的發生時機如下:

(1)當A啓動B時,A退出,B進入,A退出時的動畫名稱爲android:activityOpenExitAnimation,動畫文件爲

R.anim.activity_open_out_anim. B進入時的動畫名稱爲android:activityOpenEnterAnimation, 動畫文件爲R.anim.activity_open_in_anim.

(2)當B結束時,B退出,A進入。B退出的動畫名稱爲android:activityCloseExitAnimation, 動畫文件爲R.anim.activity_close_out_anim. A進入時的動畫名稱爲android:activityCloseEnterAnimation, 動畫文件爲R.anim.activity_close_in_anim. 

 

通過以上設置,Activity切換時便可以顯示切換動畫效果。

下面四個文件定位的是上面用到的四個動畫。

R.anim.activity_close_in_anim.xml

Xml代碼  收藏代碼
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <set xmlns:android="http://schemas.android.com/apk/res/android" >  
  3.   
  4.     <translate  
  5.         android:duration="400"  
  6.         android:fromXDelta="-100%p"  
  7.         android:fromYDelta="0"  
  8.         android:interpolator="@android:anim/decelerate_interpolator"  
  9.         android:toXDelta="0"  
  10.         android:toYDelta="0" />  
  11.   
  12. </set>  

 R.anim.activity_close_out_anim.xml

Xml代碼  收藏代碼
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <set xmlns:android="http://schemas.android.com/apk/res/android" >  
  3.     <translate  
  4.         android:duration="400"  
  5.         android:fromXDelta="0"  
  6.         android:fromYDelta="0"  
  7.         android:interpolator="@android:anim/decelerate_interpolator"  
  8.         android:toXDelta="100%p"  
  9.         android:toYDelta="0" />  
  10. </set>  

 R.anim.activity_open_in_anim.xml

Xml代碼  收藏代碼
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <set xmlns:android="http://schemas.android.com/apk/res/android" >  
  3.   
  4.     <translate  
  5.         android:duration="400"  
  6.         android:fromXDelta="100%p"  
  7.         android:fromYDelta="0"  
  8.         android:interpolator="@android:anim/decelerate_interpolator"  
  9.         android:toXDelta="0"  
  10.         android:toYDelta="0" />  
  11.   
  12. </set>  

 R.anim.activity_open_out_anim.xml

Xml代碼  收藏代碼
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <set xmlns:android="http://schemas.android.com/apk/res/android" >  
  3.   
  4.     <translate  
  5.         android:duration="400"  
  6.         android:fromXDelta="0"  
  7.         android:fromYDelta="0"  
  8.         android:interpolator="@android:anim/decelerate_interpolator"  
  9.         android:toXDelta="-100%p"  
  10.         android:toYDelta="0" />  
  11.   
  12. </set>  

 

下一篇文章中,我將說一下如何在存在大量Activity需要設置動畫時,對大量動畫如何進行管理,與相應的Activity進行一一對應。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章