1. 程式人生 > >設定整體App頁面跳轉的動畫效果

設定整體App頁面跳轉的動畫效果

設定單個頁面跳轉的動畫可以在頁面跳轉的時候加入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>