(本文詳情來源: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的時候調用一次,才有連貫的動畫!記得有兩次喔!