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>
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" />
<alpha
android:fromAlpha="0.0"
android:toAlpha="1.0"
android:duration="400"
/>
</set>
out_to_left.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="0%p"
android:toYDelta="-100%p" />
<alpha
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:duration="400"
/>
</set>
out_to_right.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="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>
3.在AndroidManifest.xml中的Application中将以上的主题引用
这样你再进行activity跳转就会有新的动画效果了。
是不是发现动画其实也是这么简单!
代码是用Android Studio写的,如果你使用的是Eclipse,只要把关键代码拷贝到Eclipse相应位置就行了