2012年8月15日 星期三

實現Activity間的轉換動畫

Android 2.0以後提供了一個簡單的方式讓兩個Activity之間的切換能夠生動一點。利用:

public void overridePendingTransition (int enterAnim, int exitAnim)



這個函式只要放在startActivity()或是finish()之後就可以。它主要是利用Tween animation來完成頁面的轉跳。

enterAnim為將要進入的頁面的animation。exitAnim為要轉出的頁面的animation。這兩個animation可以寫在res/anim目錄下,以下是我測試過還不錯的動畫

enterAnim: in_from_right.xml

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_interpolator">
     <translate
        android:duration="300"
        android:fromXDelta="100%p"
        android:toXDelta="0%p" />
</set>


exitAnim: out_to_left.xml


<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_interpolator" >

    <translate
        android:duration="300"
        android:fromXDelta="0%p"
        android:toXDelta="-100%p"
        android:startOffset="100" />
</set>

java code:

...
startActivity(intent);
overridePendingTransition(R.anim.in_from_right, R.anim.out_to_left);
...


補充:Fragment間的切換可以利用下面兩種方式來處理
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);

或是
ft.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out);