Android 开发过程中,相信大部分都会使用到界面切换,而Android本身的界面切换会显得很生硬,今天就带大家一起来看一看Android提供给我们的那些动画效果,以及如何在XML使用这些效果。
在Android的XML动画中主要有:
translate:移动(左进右出等)
alpha:淡入淡出
scale:缩放
rotate:旋转
1.translate:
<translate android:duration="400" android:fromXDelta="100%p" android:toXDelta="0" />
duration:表示持续的时间
fromXDelta:表示X轴起始delta值 (待会给出如何计算delta值)
toXDelta:表示X轴结束的delta值
如何计算delta值:Android 屏幕的坐标轴是以左上角为原点的,向右X为正值,向下Y为正值,如图所示
同理对于Y轴,在屏幕下方delta值为正,屏幕上方delta值为负
2.alpha
<alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="400" />
fromAlpha:起始透明度 ,0表示透明,1表示不透明
toAlpha:结束时的透明度
duration:持续变化时间
3.scale
<scale android:fromXScale="0.0" android:toXScale="1.0" android:fromYScale="0.0" android:toYScale="1.0" android:pivotX="50%" android:pivotY="50%" android:startOffset="0" android:duration="400" android:repeatCount="1" android:repeatMode="restart" />
fromXScale:起始的X轴缩放程度,0表示没有
toXScale:结束的X轴缩放程度
fromYScale:起始的Y轴缩放程度
toYScale:结束的Y轴缩放程度
pivotX:缩放起始的X轴相对位置 50%表示在屏幕中间
pivotY:缩放的起始Y轴相对位置
startOffset:动画多次执行的间隔时间,如果只执行一次,执行前会暂停这段时间
repeatCount:重复次数
repeatMode:repeatMode,动画重复的模式,reverse为反向,当第偶次执行时,动画方向会相反。 restart为重新执行,方向不变
4.rotate
<rotate android:duration="400" android:fromDegrees="-180" android:toDegrees="180" android:pivotX="50%" android:pivotY="50%" />
fromDegrees:起始的角度 0表示正常
toDegrees:结束时的角度
好了,动画的属性介绍完了,现在教大家如何使用
1.首先在res下创建anim文件夹,用来存放自定义的动画效果
创建4个xml文件
in_from_left_in.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/decelerate_interpolator" > <!--0的时候表示占满屏幕,100%表示在屏幕右边,-100%表示在屏幕左边--> <translate android:duration="400" android:fromYDelta="-100%p" android:toYDelta="0%p" /> <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="400" /> </set>
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/decelerate_interpolator" > <!--0的时候表示占满屏幕,100表示在屏幕右边,-100表示在屏幕左边--> <translate android:duration="400" android:fromYDelta="100%p" android:toYDelta="0" /> <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="400" /> </set>
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/decelerate_interpolator" > <!--0的时候表示占满屏幕,100表示在屏幕右边,-100表示在屏幕左边--> <translate android:duration="400" android:fromYDelta="0%p" android:toYDelta="-100%p" /> <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="400" /> </set>
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/decelerate_interpolator" > <!--0的时候表示占满屏幕,100表示在屏幕右边,-100表示在屏幕左边--> <translate android:duration="400" android:fromYDelta="0%p" android:toYDelta="100%p" /> <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="400" /> </set>
2.在style文件中做如下操作
<resources> <!-- Base application theme. --> <style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar"> <!-- Customize your theme here. --> <!--注意在主题里引用动画效果--> <item name="android:windowAnimationStyle">@style/AnimationActivity</item> </style> <style name="AnimationActivity" parent="@android:style/Animation.Activity"> <!--打开一个activity,新的activity从进入动画--> <item name="android:activityOpenEnterAnimation">@anim/in_from_right</item> <!--打开一个activity,原来activity退出的动画--> <item name="android:activityOpenExitAnimation">@anim/out_to_left</item> <!--关闭一个activity(包括返回键),上一级activity进入的动画--> <item name="android:activityCloseEnterAnimation">@anim/in_from_left</item> <!--关闭一个activity,关闭的activity退出的动画--> <item name="android:activityCloseExitAnimation">@anim/out_to_right</item> </style> </resources>
这样你再进行activity跳转就会有新的动画效果了。
是不是发现动画其实也是这么简单!
代码是用Android Studio写的,如果你使用的是Eclipse,只要把关键代码拷贝到Eclipse相应位置就行了
跳转动画DEMO