目的: Android中不同Activity之間的切換是不可避免的事情,那么怎么才能讓Activity的切換更優(yōu)雅呢中捆,Android中提供了overridePendingTransition(A漂彤,B)方法來(lái)解決這個(gè)問(wèn)題雾消。
效果: 用兩張圖來(lái)表示該函數(shù)能實(shí)現(xiàn)的效果
效果一:舊的Activity從左側(cè)出去,新的Activity從右側(cè)出來(lái)挫望。
效果二:舊的Activity從右側(cè)出去立润,新的Activity從左側(cè)出來(lái)。
先說(shuō)一下overridePendingTransition(A媳板,B)兩個(gè)參數(shù)的意思桑腮。
startActivity(new Intent(this, OtherActivity.class));
/**
* R.anim.slide_in_right:新的Activity進(jìn)入時(shí)的動(dòng)畫(huà),這里是指OtherActivity進(jìn)入時(shí)的動(dòng)畫(huà)
* R.anim.slide_out_left:舊的Activity出去時(shí)的動(dòng)畫(huà)蛉幸,這里是指this進(jìn)入時(shí)的動(dòng)畫(huà)
*/
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
這里需要特別說(shuō)明的是破讨,關(guān)于overridePendingTransition這個(gè)函數(shù)丛晦,有兩點(diǎn)需要注意
1、它必需緊挨著 startActivity() 或者 finish() 函數(shù)之后調(diào)用
2提陶、它只在 android 2.0 以及以上版本上適用
我們來(lái)實(shí)現(xiàn)一個(gè)效果:新的Activity從右側(cè)滑動(dòng)出來(lái)烫沙,就像是上圖中點(diǎn)擊第一個(gè)button劃出第二個(gè)界面一樣。
Android做了一個(gè)約定隙笆,約定整個(gè)窗口的最左側(cè)的x軸坐標(biāo)是0锌蓄,最右側(cè)的x軸坐標(biāo)是100%p,如圖:
舊的Activity實(shí)際上是x軸坐標(biāo)發(fā)生了變化:0—>-100%p
新的Activity實(shí)際上是x軸坐標(biāo)發(fā)生了變化:100%p—>0
四個(gè)效果的實(shí)現(xiàn):第一個(gè)和第二個(gè)撑柔、第三個(gè)和第四個(gè)分別配合使用
第一個(gè):slide_in_right:從右邊劃進(jìn)來(lái):100%p—>0
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="300"
android:fromXDelta="100%p"
android:toXDelta="0"/>
</set>
第二個(gè):slide_out_left:從左邊劃出去:0—>-100%p
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="300"
android:fromXDelta="0"
android:toXDelta="-100%p"/>
</set>
第三個(gè):slide_in_left:從左邊劃進(jìn)來(lái):-100%p—>0
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="300"
android:fromXDelta="-100%p"
android:toXDelta="0"/>
</set>
第四個(gè):slide_out_right:從右邊劃出去:0—>100%p
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="300"
android:fromXDelta="0"
android:toXDelta="100%p"/>
</set>