設定整體App頁面跳轉的動畫效果
阿新 • • 發佈:2019-01-29
設定單個頁面跳轉的動畫可以在頁面跳轉的時候加入overridePendingTransition()方法即可實現頁面跳轉的動畫效果,但如果我們想設定App的整體頁面跳轉效果 ,肯定不想在每次跳轉的時候都去執行該方法。下面介紹通過設定style設定Activity的頁面跳轉動畫。
關鍵點:
1. 4個動畫效果
2. 設定style屬性
跳轉的效果:
具體實現:
定義activity的四個屬性動畫,分別是”android:activityOpenEnterAnimation”,”android:activityOpenExitAnimation”,”android:activityCloseEnterAnimation”,”android:activityCloseExitAnimation”
<!--activity-->
<style name="AnimationActivity" parent="@android:style/Animation.Activity" mce_bogus="1">
<!--進入一個Acitvity包括兩部分,當前Activity退出動畫,下個個Activity進入動畫-->
<item name="android:activityOpenEnterAnimation">@anim/right_in</item> //下個Activty進入動畫
<item name="android:activityOpenExitAnimation">@anim/left_out</item> //當前Activity退出的動畫
<!--跳回一個Activity也包括兩部分,當前Activity摧毀動畫,上個Actiivty進入動畫-->
<item name="android:activityCloseEnterAnimation">@anim/in</item> //上個Activity進入動畫
<item name="android:activityCloseExitAnimation" >@anim/out</item> //當前Activity退出動畫
</style>
然後將上面定義的style設定給App的主Theme的”android:windowAnimationStyle”屬性即可
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">#009688</item>
<item name="android:windowAnimationStyle">@style/AnimationActivity</item>
</style>
下面給出四個動畫,很簡單,進入的時候:右進左出;退出時,左進由出
right_in.xml 其實這裡可以設定組合動畫,註釋掉的程式碼是因為我實現的組合效果著實太差
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="800"
android:toXDelta="0"
android:duration="500" />
<!-- <alpha android:fromAlpha="0.1"
android:toAlpha="1.0"
android:duration="800"/>-->
<!--<scale
android:fromXScale="0.2"
android:toXScale="1.0"
android:fromYScale="0.2"
android:toYScale="1.0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="500"
android:interpolator="@android:anim/accelerate_interpolator"/>-->
</set>
left_out.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0"
android:toXDelta="-400"
android:duration="500" />
<!-- <alpha android:fromAlpha="1.0"
android:toAlpha="0.5"
android:duration="500"/>-->
<!--<scale
android:fromXScale="1.0"
android:toXScale="0.2"
android:fromYScale="1.0"
android:toYScale="0.2"
android:pivotX="50%"
android:pivotY="50%"
android:duration="500"
android:interpolator="@android:anim/accelerate_interpolator"/>-->
</set>
in.xml
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="-400"
android:toXDelta="0"
android:duration="500"/>
<!-- <alpha android:fromAlpha="0.50"
android:toAlpha="1.0"
android:duration="500"/>-->
<!--<scale
android:fromXScale="0.2"
android:toXScale="1.0"
android:fromYScale="0.2"
android:toYScale="1.0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="500"
android:interpolator="@android:anim/accelerate_interpolator"/>-->
</set>
out.xml
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0"
android:toXDelta="800"
android:duration="500" />
<!-- <alpha android:fromAlpha="1.0"
android:toAlpha="0.5"
android:duration="500"/>-->
<!--<scale
android:fromXScale="1.0"
android:toXScale="0.2"
android:fromYScale="1.0"
android:toYScale="0.2"
android:pivotX="50%"
android:pivotY="50%"
android:duration="500"
android:interpolator="@android:anim/accelerate_interpolator"/>-->
</set>