Android Activity切換過渡動畫

好幾天都木有更新博客了,這段時間是在是太忙了,不過積累經(jīng)驗的習(xí)慣不能荒廢,于是決定今天不管忙到多晚,一定要記錄一篇

這次記錄的是我剛好今天學(xué)到的一點知識,有關(guān)于activity的切換動畫的。

這兩天有幾家企業(yè)在學(xué)校招生,面試了一家公司,經(jīng)過筆試和面試,HR說今天會給我一份任務(wù)需求,讓我在兩天內(nèi)完成(我去,時間好緊),今天收到任務(wù)書便立馬放下手中的項目開始著手。任務(wù)是要完成一個智能家居類的App,想了想畢竟是給HR的不能做的太寒顫,起碼的動畫效果還是得有的,于是乎就有了今天的問題。

如何添加Activity的切換動畫呢

先上效果圖(GIF顯示效果比較卡,不過實際是很流暢的)
效果.gif

找到了兩種實現(xiàn)辦法

1. overridePendingTransition方法

在startActivity后加上這樣一行代碼

startActivity(new Intent(MainActivity.this , SelectWiFiActivity.class));
overridePendingTransition(R.anim.up_in, R.anim.up_out);

然后在跳轉(zhuǎn)到的activity里重寫finish方法

    @Override
    public void finish() {
        super.finish();
        overridePendingTransition(R.anim.down_in, R.anim.down_out);
    }

overridePendingTransition的兩個參數(shù)分別是新的activity進入的動畫和當(dāng)前activity退出的動畫

2.自定義主題style

在style.xml文件夾內(nèi)加入

    <style name="AnimActivity" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowAnimationStyle">@style/AnimationActivity</item>
        <item name="android:windowNoTitle">true</item>
    </style>

    <style name="AnimationActivity" parent="@android:style/Animation.Activity" >
        <item name="android:activityOpenEnterAnimation">@anim/up_in</item>
        <item name="android:activityOpenExitAnimation">@anim/up_out</item>
        <item name="android:activityCloseEnterAnimation">@anim/down_in</item>
        <item name="android:activityCloseExitAnimation">@anim/down_out</item>
    </style>
A 啟動 B 時,A 從屏幕上消失,這時執(zhí)行的是A的android:activityOpenExitAnimation
A 啟動 B 時,B 出現(xiàn)在屏幕上,這時執(zhí)行的是B的android:activityOpenEnterAnimation
從 B 返回A時,B從屏幕上消失,這時執(zhí)行的是B的android:activityCloseExitAnimation
從 B 返回A時,A 出現(xiàn)在屏幕上,這時執(zhí)行的是A的android:activityCloseEnterAnimation
我的動畫文件,供參考

up_in.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:fromYDelta="100%p"
        android:toYDelta="0"
        android:duration="800"
        />
</set>

up_out.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:fromYDelta="0"
        android:toYDelta="-100%p"
        android:duration="800"
        />
</set>

down_in.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:fromYDelta="-100%p"
        android:toYDelta="0"
        android:duration="800"
        />
</set>

down_out.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:fromYDelta="0"
        android:toYDelta="100%p"
        android:duration="800"
        />
</set>

至此,一聲感嘆,animation set居然還有如此之操作?hh

更多動畫效果可以參考
Android Developer API文檔 (需 科 學(xué) 上 網(wǎng))

使用style主題既可以應(yīng)用在AndroidManifest.xml下 application的android:theme里作為全局主題動畫效果,也可以單獨應(yīng)用在activity內(nèi)單獨應(yīng)用于某些activity

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/MyAppTheme">

剛使用可能會出現(xiàn)動畫混亂導(dǎo)致過渡效果不理想,沒關(guān)系,多嘗試幾次就能理解哪個參數(shù)對應(yīng)了哪一步的動畫了。

不早了,先睡覺。
明早起來繼續(xù)奮斗!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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