本讲内容:Android 动画入门指南
1、补间动画
2、逐帧动画
Android中动画的实现分两种方式,一种方式是补间动画 Teen Animation,就是说你定义一个开始和结束,中间的部分由程序运算得到。另一种叫逐帧动画 Frame Animation,就是说一帧一帧的连起来播放就变成了动画。有点Flash基础的同学理解起来会很容易。接下来我们一个一个学习。
一、补间动画 Teen Animation
Android中实现补间动画的思路是这样的,
1、首先用XML定义一个动画效果
2、依据这个XML使用AnimationUtils工具类创建一个Animationd对象
3、调用View组件的startAnimation方法实现动画。
接下来我们用一个例子来看一下。
1、创建一个项目 Lesson24_Animation,主Activity名字叫MainActivity.java
2、在res目录下创建一个anim目录,在目录下创建下面五个动画定义文件,需要注意的是这5个文件在是2.2下调试通过的,网上很多文档的xml是无法通过IDE的检查的,可能是新版本检查更严格了。
alpha_animation.xml
1 |
<? xml version = "1.0" encoding = "utf-8" ?> |
3 |
< alpha android:duration = "300" android:toalpha = "1.0" android:fromalpha = "0.5" android:repeatmode = "restart" android:repeatcount = "1" android:interpolator = "@android:anim/accelerate_interpolator" xmlns:android = "http://schemas.android.com/apk/res/android" > |
4 |
< alpha android:duration = "3000" android:toalpha = "1.0" android:fromalpha = "0.5" android:repeatmode = "restart" android:repeatcount = "0" android:interpolator = "@android:anim/accelerate_interpolator" xmlns:android = "http://schemas.android.com/apk/res/android" > |
composite_animation.xml
2 |
< scale android:duration = "700" android:interpolator = "@android:anim/accelerate_decelerate_interpolator" xmlns:android = "http://schemas.android.com/apk/res/android" android:fillafter = "false" android:pivoty = "50%" android:pivotx = "50%" android:toyscale = "0.6" android:fromyscale = "1.0" android:toxscale = "1.4" android:fromxscale = "1.0" > |
3 |
</ scale ></ set >< set android:interpolator = "@android:anim/decelerate_interpolator" > |
4 |
< scale android:duration = "400" xmlns:android = "http://schemas.android.com/apk/res/android" android:pivoty = "50%" android:pivotx = "50%" android:toyscale = "0.0" android:fromyscale = "0.6" android:toxscale = "0.0" android:fromxscale = "1.4" android:fillbefore = "false" android:startoffset = "700" > |
5 |
< rotate android:duration = "400" xmlns:android = "http://schemas.android.com/apk/res/android" android:pivoty = "50%" android:pivotx = "50%" android:toyscale = "0.0" android:startoffset = "700" android:todegrees = "-45" android:fromdegrees = "0" > |
6 |
</ rotate ></ scale ></ set > |
rotate_animation.xml
1 |
<? xml version = "1.0" encoding = "utf-8" ?> |
3 |
< rotate android:duration = "4000" android:interpolator = "@android:anim/decelerate_interpolator" xmlns:android = "http://schemas.android.com/apk/res/android" android:pivoty = "50%" android:pivotx = "50%" android:todegrees = "-1440" android:fromdegrees = "0" > |
scale_animation.xml
1 |
<? xml version = "1.0" encoding = "utf-8" ?> |
3 |
< scale android:duration = "1000" android:interpolator = "@android:anim/decelerate_interpolator" xmlns:android = "http://schemas.android.com/apk/res/android" android:fillafter = "false" android:pivoty = "100%" android:pivotx = "0%" android:toyscale = "1.0" android:fromyscale = "0.0" android:toxscale = "1.0" android:fromxscale = "0.0" > |
5 |
< scale android:duration = "1000" android:interpolator = "@android:anim/decelerate_interpolator" xmlns:android = "http://schemas.android.com/apk/res/android" android:fillafter = "false" android:pivoty = "50%" android:pivotx = "50%" android:toyscale = "1.0" android:fromyscale = "0.0" android:toxscale = "1.0" android:fromxscale = "0.0" > |
translate_animation.xml
1 |
<? xml version = "1.0" encoding = "utf-8" ?> |
3 |
< translate android:duration = "2000" android:interpolator = "@android:anim/decelerate_interpolator" xmlns:android = "http://schemas.android.com/apk/res/android" android:toydelta = "0" android:fromydelta = "0" android:toxdelta = "300" android:fromxdelta = "0" > |
5 |
< translate android:duration = "2000" android:interpolator = "@android:anim/decelerate_interpolator" xmlns:android = "http://schemas.android.com/apk/res/android" android:startoffset = "2000" android:toydelta = "0" android:fromydelta = "0" android:toxdelta = "-300" android:fromxdelta = "0" > |
3、MainActivity.java的内容如下:
01 |
package android.basic.lesson24; |
03 |
import android.app.Activity; |
04 |
import android.os.Bundle; |
05 |
import android.view.View; |
06 |
import android.view.View.OnClickListener; |
07 |
import android.view.animation.Animation; |