切換Activity的進(jìn)入/退出動(dòng)畫

目的: Android中不同Activity之間的切換是不可避免的事情,那么怎么才能讓Activity的切換更優(yōu)雅呢,Android中提供了overridePendingTransition(A,B)方法來解決這個(gè)問題。

效果: 用兩張圖來表示該函數(shù)能實(shí)現(xiàn)的效果

效果一:舊的Activity從左側(cè)出去,新的Activity從右側(cè)出來。
效果二:舊的Activity從右側(cè)出去,新的Activity從左側(cè)出來。

先說一下overridePendingTransition(A,B)兩個(gè)參數(shù)的意思。

    startActivity(new Intent(this, OtherActivity.class));
    /**
     * R.anim.slide_in_right:新的Activity進(jìn)入時(shí)的動(dòng)畫,這里是指OtherActivity進(jìn)入時(shí)的動(dòng)畫
     * R.anim.slide_out_left:舊的Activity出去時(shí)的動(dòng)畫,這里是指this進(jìn)入時(shí)的動(dòng)畫
     */
    overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);

這里需要特別說明的是,關(guān)于overridePendingTransition這個(gè)函數(shù),有兩點(diǎn)需要注意
1、它必需緊挨著 startActivity() 或者 finish() 函數(shù)之后調(diào)用
2、它只在 android 2.0 以及以上版本上適用

我們來實(shí)現(xiàn)一個(gè)效果:新的Activity從右側(cè)滑動(dòng)出來,就像是上圖中點(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)來: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)來:-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>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容