Activity的切换动画实际上是Android的View Animation(视图动画)中的Tween Animation效果,Tween Animation分为4种动画效果,分别是:alpha (透明变化) translate(位置移动) scale(缩放) rotate(旋转), 而左右滑动切换使用的是 translate(位置移动)的效果,在下一篇我们再讨论一下 alpha (透明变化) 、scale(缩放)、 rotate(旋转) 这三种效果,本篇只将 translate(位置移动)。
直接上代码
在 res目录创建anim目录, 然后在目录创建动画的xml文件:out_to_left.xml (从左边退出动画) 、in_from_right.xml(从右边进入动画)、out_to_right.xml(从右边退出动画)、in_from_left.xml(从左边进入动画)
1.in_from_left
android:duration="200"
android:fromXDelta="-100%p"
android:interpolator="@android:anim/linear_interpolator"
android:toXDelta="0%p" >
2.in_from_right
android:duration="200"
android:fromXDelta="100%p"
android:interpolator="@android:anim/linear_interpolator"
android:toXDelta="0%p" >
3.out_to_left
android:duration="200"
android:fromXDelta="0%p"
android:toXDelta="-100%p"
android:interpolator="@android:anim/linear_interpolator" >
4.out_to_right
android:duration="200"
android:fromXDelta="0%p"
android:toXDelta="100%p"
android:interpolator="@android:anim/linear_interpolator" >
修改主题文件
在values文件夹中打开style.xml的文件,在其中插入一个style节点,声明一个主题。
#FF9800
#FF5722
@color/colorAccent
@style/fade
@anim/in_from_right
@anim/out_to_left
@anim/in_from_left
@anim/out_to_right
主要添加
@style/fade
@anim/in_from_right
@anim/out_to_left
@anim/in_from_left
@anim/out_to_right
现在假设有两个Activity A 和 B,在A中可以启动B。同时,A和B的theme属性均设置为上面定义的属性。那么,以上动画的发生时机如下:
(1)当A启动B时,A退出,B进入,A退出时的动画名称为android:activityOpenExitAnimation,动画文件为
R.anim.out_to_left,B进入时的动画名称为android:activityOpenEnterAnimation, 动画文件为R.anim.in_from_right。
(2)当B结束时,B退出,A进入。B退出的动画名称为android:activityCloseExitAnimation, 动画文件为R.anim.out_to_right, A进入时的动画名称为android:activityCloseEnterAnimation, 动画文件为R.anim.in_from_left。