天天看點

Android Activity間的過渡動畫

(本文詳情來源:http://blog.csdn.net/h3c4lenovo/article/details/11526195   轉載請注明出處)

在Android中,兩個activiyt的切換總是自左向右抽動的效果

在Activity中提供了overridePendingTransition函數,用在startActivity(Intent) 或 finish之後,

overridePendingTransition有兩個參數,都是int類型的,意味着這裡要傳入一個資源,

在sdk中是這樣定義的、

enterAnim A resource ID of the animation resource to use for the incoming activity. Use 0 for no animation.

exitAnim A resource ID of the animation resource to use for the outgoing activity. Use 0 for no animation.

一個是進入的動畫,一個是退出的動畫,如果連個值都設定成0,則表示不添加動畫

即:overridePendingTransition(0, 0);

例如  在startActivity開啟一個intent之後,添加如下代碼

overridePendingTransition(Android.R.anim.fade_in, android.R.anim.fade_out);  

這樣在啟動下一個視窗的時候出現淡入淡出的效果

//實作從左向右滑動效果    

overridePendingTransition(Android.R.anim.slide_in_left,    

Android.R.anim.slide_out_right); 

另外,還可以通過在資源檔案夾中anim中添加自定義的配置檔案,來實作自定義過度動畫

例如在程式中添加這樣的 效果來實作和iphone一樣的效果

overridePendingTransition(R.anim.zoomin, R.anim.zoomout);  

自定義的zoomin.xml檔案,該檔案設定了新的activity進入時的效果 

<?xml version="1.0" encoding="utf-8"?>   
<set   
    xmlns:Android="http://schemas.android.com/apk/res/android"  
    Android:interpolator="@android:anim/decelerate_interpolator">   
    <scale   
        Android:fromXScale="2.0"        android:toXScale="1.0"   
        Android:fromYScale="2.0"        android:toYScale="1.0"   
        Android:pivotX="50%p"       android:pivotY="50%p"   
        Android:duration="@android:integer/config_mediumAnimTime" />   
</set> 
           

自定義的zoomout.xml檔案,該檔案設定了原來的activity退出是的效果 

<?xml version="1.0" encoding="utf-8"?>   
<set   
    xmlns:Android="http://schemas.android.com/apk/res/android"  
    Android:interpolator="@android:anim/decelerate_interpolator"   
    Android:zAdjustment="top">   
    <scale   
        Android:fromXScale="2.0"        android:toXScale="0.5"   
        Android:fromYScale="2.0"        android:toYScale="0.5"   
        Android:pivotX="50%p"       android:pivotY="50%p"   
        Android:duration="@android:integer/config_mediumAnimTime" />   
    <alpha   
        Android:fromAlpha="1.0"   
        Android:toAlpha="0"   
        Android:duration="@android:integer/config_mediumAnimTime" />   
</set>  
           

最後在友情提示一下給沒有仔細看的同學,此方法會在startActivity和finish之後立即調用。

意思是說,你要在A start B的時候調用一次,還要在B finish的時候調用一次,才有連貫的動畫!記得有兩次喔!