为Activity加上风格统一的切换动画

在开发一个app的过程中有时我们会想:能不能在什么地方加上一些代码就能让我们整个app的Activity都实现一个流畅,炫酷的切换效果呢?
在这里我就使用一种简单的方法来实现上面的需求:

通常情况下我们在给activty添加切换动画是在starActivity();方法后面添加
overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out);
这个方法,我们就能让这个activity实现切换的动画效果了

这里需要提一下的是,overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out)这个方法只有在starActivity()或者finish()方法后面调用才有效果且它只在android2.0以及以上版本上适用

但是一个app有那么多个activity我们不可能在每一个activity中都加这么几行代码吗,这不是严重违反了我们代码复用性原则吗,所以下面我要说的是一种只需在几个地方配置几行代码就能让整个app的activity都拥有统一的切换动画

首先:

在values/themes.xml中
<style name="MyActivityTheme" >
<item name="android:windowAnimationStyle">@style/AnimationActivity</item>
<item name="android:windowNoTitle">true</item>
</style>

然后

在values/styles.xml中

<style name="AnimationActivity" parent="@android:style/Animation.Activity">    
<item name="android:activityOpenEnterAnimation">@anim/action_left_enter</item>          
<item name="android:activityOpenExitAnimation">@anim/action_left_exit</item>          
<item name="android:activityCloseEnterAnimation">@anim/action_rigth_enter</item>   
<item name="android:activityCloseExitAnimation">@anim/action_rigth_exit</item>      
</style>  

最后

我们只需要在AndroidManifest里面添加我们刚才设置好的Theme就可以实现整个app的activity切换动画效果了<application
android:name="com.BaseApplication"
android:icon="@mipmap/app_logo"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/MyActivityTheme">

有的人可能会问,我app中有一些特殊的activity不需要切换效果呢?
这个时候我们只需在你不需要切换效果的activity下面添加另外的主题就可以了,这样我们就能很方便的让整个app拥有统一的动画风格,同时也可以让一些有特殊需求的界面实现不一样的动画效果
<activity
android:name=".activityAll.MainActivity"
android:theme="@style/Theme.AppCompat.Light.NoActionBar"/>

这里我再给出一个activty左右切换的动画代码
action_rigth_enter.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate android:fromXDelta="100%p" android:toXDelta="0%p"
android:duration="500" />
</set>

action_left_enter.xml

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

action_left_exit.xml

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

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

你可能感兴趣的:(动画,APP,需求)