本篇文章为大家介绍关于自定义Activity的切换动画,分两种,一种是淡入淡出,另一种是滑入滑出,通过在Manifest中为Activity添加Theme实现,具体实现过程如下
首先在res文件夹下建立anim文件夹,然后在里面建立fade_in.xml和fade_out.xml两个动画资源
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:fromAlpha="0.0"
android:interpolator="@android:anim/accelerate_interpolator"
android:toAlpha="1.0" />
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="1000"
android:fromAlpha="1.0"
android:interpolator="@android:anim/accelerate_interpolator"
android:toAlpha="0.0" />
如上所示,其中常见的interpolator有
- LinearInterpolator:线性插值器,匀速运动;
- AccelerateDecelerateInterpolator:加速减速插值器,动画两头慢中间快;
- DecelerateInterpolator:减速插值器,动画越来越慢;
然后在values文件夹下的styles.xml中的resources标签内写:
<style name="Anim_fade" parent="android:Theme.NoTitleBar">
<item name="android:windowAnimationStyle">@style/fade</item>
</style>
<style name="fade" parent="@android:style/Animation.Activity">
<item name="android:activityOpenEnterAnimation">@anim/fade_in</item>
<item name="android:activityOpenExitAnimation">@anim/fade_out</item>
<item name="android:activityCloseEnterAnimation">@anim/fade_in</item>
<item name="android:activityCloseExitAnimation">@anim/fade_out</item>
</style>
接下来在Mainfest中的activity中添加上android:theme="@style/Anim_fade"即可,上述定义的是淡入淡出效果,接下来介绍滑入滑出
在anim文件夹新建slide_in_left、slide_out_right、slide_out_left、slide_in_right四个xml文件,内容如下
<?xml version="1.0" encoding="utf-8"?>
<translate
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:fromXDelta="-100%"
android:toXDelta="0"
android:interpolator="@android:anim/accelerate_interpolator"
/>
<?xml version="1.0" encoding="utf-8"?>
<translate
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:fromXDelta="0"
android:toXDelta="100%"
android:interpolator="@android:anim/accelerate_interpolator"
/>
<?xml version="1.0" encoding="utf-8"?>
<translate
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:fromXDelta="0"
android:toXDelta="-100%"
android:interpolator="@android:anim/accelerate_interpolator"
/>
<?xml version="1.0" encoding="utf-8"?>
<translate
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:fromXDelta="100%"
android:toXDelta="0"
android:interpolator="@android:anim/accelerate_interpolator"
/>
然后在values文件夹下的styles.xml中的resources标签内写:
<style name="Anim_translate" parent="android:Theme.NoTitleBar">
<item name="android:windowAnimationStyle">@style/translate</item>
</style>
<style name="translate" parent="@android:style/Animation.Activity">
<item name="android:activityOpenEnterAnimation">@anim/slide_in_left</item>
<item name="android:activityOpenExitAnimation">@anim/slide_out_right</item>
<item name="android:activityCloseEnterAnimation">@anim/slide_in_right</item>
<item name="android:activityCloseExitAnimation">@anim/slide_out_left</item>
</style>
接着在Mainfest中的activity添加android:theme="@style/Anim_translate"就可以了,上面实现的是跳转Activity时左进右出,按back键返回上一层时右进左出