1. 程式人生 > >安卓activity切換動畫

安卓activity切換動畫

方式一:overridePendingTransition(int enterAnim, int exitAnim)

從Android2.0開始在Activity增加了一個方法overridePendingTransition (int enterAnim, int exitAnim)其中:enterAnim 定義Activity進入螢幕時的動畫,exitAnim 定義Activity退出螢幕時的動畫.

在res/anim/建2個xml檔案,一個用來表示activity進入時的動畫,還有一個表示activity退出時的動畫.注意overridePendingTransition方法的呼叫時機必須放在startActivity()和finish()方法之後.

示例1.向右滑動切換效果

1.1 從第二個activity從右側進入動畫right_in.xml

<?xml version = "1.0" encoding = "utf-8" ?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000">
    <translate android:fromXDelta="100%p" android:toXDelta="0%p"
        android:interpolator="@android:anim/accelerate_interpolator"/>
</set>
1.2 第一個activity從螢幕中間向左退出時動畫.left_out.xml
<?xml version = "1.0" encoding = "utf-8" ?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000">
    <translate android:fromXDelta="0%p" android:toXDelta="-100%p"
        android:interpolator="@android:anim/accelerate_interpolator"/>
</set>

1.3java程式碼使用

overridePendingTransition(R.anim.right_in,R.anim.left_out)

方式二:在主題中修改activity切換動畫

在清單檔案中配置theme屬性,自定義一個樣式就可以了

 <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

res/values/styles.xml定義一個樣式繼承Animation.Activity,然後分別定義4個item,item四個屬性的意思大概是這樣的,假設有2個activity,分別叫做A,B.A頁面啟動B頁面時,A會在頁面消失,B會在頁面呈現,這時候A會執行android:activityOpenExitAnimation動畫效果

而B會執行android:activityOpenEnterAnimation.這是開啟新頁面的操作.如果從B頁面開始返回到A頁面,這時候B頁面會消失在螢幕上,而A頁面會重新進入到頁面上去,這時候對於B來說執行的是退出操作,所以會走android:activityCloseExitAnimation這個動畫,對於A來說是從原來的關閉狀態重新進入螢幕,所以走的是android:activityCloseEnterAnimation動畫效果

   <style name="AnimationActivity" mce_bogus="1" parent="@android:style/Animation.Activity">
        <item name="android:activityOpenEnterAnimation">@anim/push_left_in</item>
        <item name="android:activityOpenExitAnimation">@anim/push_left_out</item>
        <item name="android:activityCloseEnterAnimation">@anim/push_right_in</item>
        <item name="android:activityCloseExitAnimation">@anim/push_right_out</item>
    </style>

          定義完以上樣式後,請在res/anim/目錄下分別定義4個動畫切換的檔案.這裡可以根據自己的喜好進行自定義.定義完成之後,在AndroidMenifest.xml清單檔案修改原來的主題樣式.修改

 android:theme="@style/AnimationActivity"