Activity切換動畫。從右邊滑入,關閉時從左邊滑入


直接貼代碼吧

 

1. 動畫文件(兩個動畫文件配置到res/anim目錄下)

activity_anim_in_right.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="500"
android:fillAfter="true"
android:fromXDelta="100%p"
android:interpolator="@android:anim/accelerate_interpolator"
android:toXDelta="0" />
</set>

activity_anim_out_left.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="500"
android:fillAfter="true"
android:fromXDelta="0"
android:interpolator="@android:anim/accelerate_interpolator"
android:toXDelta="100%p" />
</set>
2.將兩個資源文件配置到style文件中的
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- All customizations that are NOT specific to a particular API-level can go here. -->

<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<!-- 設置activity切換動畫 -->
<item name="android:windowAnimationStyle">@style/activityAnimation</item>

<item name="android:windowIsTranslucent">true</item>
</style>
<style name="activityAnimation" parent="@android:style/Animation">
<item name="android:activityOpenEnterAnimation">@anim/activity_anim_in_right</item>
<item name="android:activityCloseExitAnimation">@anim/activity_anim_out_left</item>
</style>

3.配置的到Application的android:theme="@style/AppTheme"

:系統動畫 < AppTheme < (overridePendingTransition\ActivityOptionsCompat))



如果出現沒有動畫,或動畫與設置不一致

原因:當頁面切換時需要進入和消失兩個動畫,當沒有進入動畫時,消失動畫也不會執行,會執行系統動畫,如果沒有系統動畫則沒有動畫,或者某個頁面使用第一或第二種方式設置了動畫(動畫執行優先級,系統動畫 < AppTheme < (overridePendingTransition\ActivityOptionsCompat))。

解決方法:為了保證進入和消失都有動畫,要將動畫主題設置到兩個Activity上。也可以將主題設置到application上,這樣整個應用都是用該切換動畫。如果是某個頁面使用第一或第二種方式設置了動畫,那么在啟動和退出時最好都要設置,不然會造成啟動和退出不一致的情況。

總結:

第一種方式:靈活可以隨意控進入消失動畫,但是實現不方便。
第二種方式:與第一種方式類似,但是該種方式為我們提供了多種特殊動畫。
第三種方式:使用方便,只需要配置主題,不需要添加過多代碼,但是不夠靈活

建議:

定義一種動畫主題,並設置到application上,將整個應用的切換動畫統一,如果某個頁面有特殊要求,再根據不用需求使用第一或第二種類型單獨處理。

希望可以幫助到你,加油⛽️!



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM