1、补间动画
2、逐帧动画Android中动画的实现分两种方式,一种方式是补间动画 Tween Animation,就是说你定义一个开始和结束,中间的部分由程序运算得到。另一种叫逐帧动画 Frame Animation,就是说一帧一帧的连起来播放就变成了动画。有点Flash基础的同学理解起来会很容易。接下来我们一个一个学习。一、补间动画 Tween AnimationAndroid中实现补间动画的思路是这样的,
1、首先用XML定义一个动画效果
2、依据这个XML使用AnimationUtils工具类创建一个Animationd对象
3、调用View组件的startAnimation方法实现动画。接下来我们用一个例子来看一下。1、创建一个项目 Lesson24_Animation,主Activity名字叫MainActivity.java2、在res目录下创建一个anim目录,在目录下创建下面五个动画定义文件,需要注意的是这5个文件在是2.2下调试通过的,网上很多文档的xml是无法通过IDE的检查的,可能是新版本检查更严格了。
scale_animation.xml
translate_animation.xml
3、MainActivity.java的内容如下:
4、运行程序,查看结果
原始图
点击第一个按钮的透明度变化效果
点击第二个按钮的缩放效果,这里看到的是两个缩放效果同时作用叠加的效果。也就是说默认情况下效果是同时发生的,而不是先后执行的,除非你使用 startoffset属性指定。同学们看这一讲最重要的还是自己练习来体会。
点击第三个按钮的位移效果,这个例子里我们可以清楚看到android:startOffset=”2000″的作用,数独按钮前2秒向右移了300像素,后2秒又回到原处,注意第二个translate中的负值参数,它清晰的告诉我们位移数据是相对自身当时位置的。
点击第四个按钮的旋转效果,负的度数表示逆时针旋转。
点击第五个按钮的复合动画效果,这个效果的代码我是直接粘贴的官方帮助文档里的代码,看着效果还不赖^_^ 二、逐帧动画我们知道,Android是不支持Gif动画的,也不建议使用Gif动画,比较不幸的是到Android 2.2版本为止也不支持APNG这种png动画格式,所以我们制作只能用多张png图片逐帧播放的方式来实现动画效果。下面我们用一个例子来学习一下逐帧动画。1、新建一个项目 Lesson24_FrameAnimation , 主Acitivy名字叫 MainFrameAnimation.java2、拷贝下列图片到 res/drawable目录下
2、在res/anim目录下,新建一个文件 firefox_animation.xml 内容如下:
3、在res/layout/main.xml中写入如下内容:
4、在MainFrameAnimation.javaz中的内容如下:
4、运行程序,查看效果:
换个背景再来一张,可以看到png动画的透明就是不一般^_^
顺便提一下,我的这些可爱的小狐狸图标,是在APNG这个项目中找到的,感兴趣的朋友去搜搜APNG吧。
2、逐帧动画Android中动画的实现分两种方式,一种方式是补间动画 Tween Animation,就是说你定义一个开始和结束,中间的部分由程序运算得到。另一种叫逐帧动画 Frame Animation,就是说一帧一帧的连起来播放就变成了动画。有点Flash基础的同学理解起来会很容易。接下来我们一个一个学习。一、补间动画 Tween AnimationAndroid中实现补间动画的思路是这样的,
1、首先用XML定义一个动画效果
2、依据这个XML使用AnimationUtils工具类创建一个Animationd对象
3、调用View组件的startAnimation方法实现动画。接下来我们用一个例子来看一下。1、创建一个项目 Lesson24_Animation,主Activity名字叫MainActivity.java2、在res目录下创建一个anim目录,在目录下创建下面五个动画定义文件,需要注意的是这5个文件在是2.2下调试通过的,网上很多文档的xml是无法通过IDE的检查的,可能是新版本检查更严格了。
alpha_animation.xml
|
<?xml version="1.0" encoding="utf-8"?>
|
composite_animation.xml
rotate_animation.xml
|
<?xml version=
"1.0"
encoding=
"utf-8"
?>
|
scale_animation.xml
|
<?xml version=
"1.0"
encoding=
"utf-8"
?>
|
translate_animation.xml
|
<?xml version=
"1.0"
encoding=
"utf-8"
?>
|
3、MainActivity.java的内容如下:
4、运行程序,查看结果
![1.png 1.png](http://www.eoeandroid.com/data/attachment/forum/201206/25/16402517jmib5tbnjokpjb.png)
原始图
![2.png 2.png](http://www.eoeandroid.com/data/attachment/forum/201206/25/164026vvu4vvuiixuidhhi.png)
点击第一个按钮的透明度变化效果
![3.png 3.png](http://www.eoeandroid.com/data/attachment/forum/201206/25/16402712919zhdpz1gkpcf.png)
点击第二个按钮的缩放效果,这里看到的是两个缩放效果同时作用叠加的效果。也就是说默认情况下效果是同时发生的,而不是先后执行的,除非你使用 startoffset属性指定。同学们看这一讲最重要的还是自己练习来体会。
![4.png 4.png](http://www.eoeandroid.com/data/attachment/forum/201206/25/164027amnxcctwx9mw3fw1.png)
点击第三个按钮的位移效果,这个例子里我们可以清楚看到android:startOffset=”2000″的作用,数独按钮前2秒向右移了300像素,后2秒又回到原处,注意第二个translate中的负值参数,它清晰的告诉我们位移数据是相对自身当时位置的。
![5.png 5.png](http://www.eoeandroid.com/data/attachment/forum/201206/25/164027fffujazmffzwfef3.png)
点击第四个按钮的旋转效果,负的度数表示逆时针旋转。
![6.png 6.png](http://www.eoeandroid.com/data/attachment/forum/201206/25/164028wsga3mz9wera1999.png)
点击第五个按钮的复合动画效果,这个效果的代码我是直接粘贴的官方帮助文档里的代码,看着效果还不赖^_^ 二、逐帧动画我们知道,Android是不支持Gif动画的,也不建议使用Gif动画,比较不幸的是到Android 2.2版本为止也不支持APNG这种png动画格式,所以我们制作只能用多张png图片逐帧播放的方式来实现动画效果。下面我们用一个例子来学习一下逐帧动画。1、新建一个项目 Lesson24_FrameAnimation , 主Acitivy名字叫 MainFrameAnimation.java2、拷贝下列图片到 res/drawable目录下
![7.png 7.png](http://www.eoeandroid.com/data/attachment/forum/201206/25/1640284nv8nbzxu4j2ckxb.png)
![8.png 8.png](http://www.eoeandroid.com/data/attachment/forum/201206/25/164029ssxf7eggstheszet.png)
![9.png 9.png](http://www.eoeandroid.com/data/attachment/forum/201206/25/164029t8426e2f2v5c8td8.png)
![10.png 10.png](http://www.eoeandroid.com/data/attachment/forum/201206/25/164030fx6tookuseo6k1ud.png)
![11.png 11.png](http://www.eoeandroid.com/data/attachment/forum/201206/25/164030x9gkj00j9nb400l9.png)
![12.png 12.png](http://www.eoeandroid.com/data/attachment/forum/201206/25/164030e1zruxdrxrum3b7e.png)
![13.png 13.png](http://www.eoeandroid.com/data/attachment/forum/201206/25/1640317787e9c577i879zf.png)
![14.png 14.png](http://www.eoeandroid.com/data/attachment/forum/201206/25/164031ks59m7jnghs69kmj.png)
![15.png 15.png](http://www.eoeandroid.com/data/attachment/forum/201206/25/16403112qbmhpzhj12mqpq.png)
![16.png 16.png](http://www.eoeandroid.com/data/attachment/forum/201206/25/164032os0tjip0mdp07cgd.png)
![17.png 17.png](http://www.eoeandroid.com/data/attachment/forum/201206/25/164032k66yy10fk1kmmesf.png)
![18.png 18.png](http://www.eoeandroid.com/data/attachment/forum/201206/25/164033tt7zvv0p4ez433a3.png)
![19.png 19.png](http://www.eoeandroid.com/data/attachment/forum/201206/25/1640338n22znayw82080no.png)
![20.png 20.png](http://www.eoeandroid.com/data/attachment/forum/201206/25/1640333hiy0mh3hlwzypps.png)
![21.png 21.png](http://www.eoeandroid.com/data/attachment/forum/201206/25/164034gt3gqgq2hh08wgwg.png)
![22.png 22.png](http://www.eoeandroid.com/data/attachment/forum/201206/25/164034qwe5niq9xeie9xxx.png)
![23.png 23.png](http://www.eoeandroid.com/data/attachment/forum/201206/25/164034l76le4geg0zw26yo.png)
![24.png 24.png](http://www.eoeandroid.com/data/attachment/forum/201206/25/164035z1j060c3z16nj00m.png)
![25.png 25.png](http://www.eoeandroid.com/data/attachment/forum/201206/25/164035zh53l8c8ghc9x0go.png)
![26.png 26.png](http://www.eoeandroid.com/data/attachment/forum/201206/25/164035azk3s8z43xk1kx3q.png)
![27.png 27.png](http://www.eoeandroid.com/data/attachment/forum/201206/25/1640365xehh05640zv3x4v.png)
![28.png 28.png](http://www.eoeandroid.com/data/attachment/forum/201206/25/164036kg1ivk92mmn3h6u3.png)
![29.png 29.png](http://www.eoeandroid.com/data/attachment/forum/201206/25/1640362q2k2aa9q1msm232.png)
![30.png 30.png](http://www.eoeandroid.com/data/attachment/forum/201206/25/1640370vvvtvehzqybd9wb.png)
2、在res/anim目录下,新建一个文件 firefox_animation.xml 内容如下:
|
<?xml version=
"1.0"
encoding=
"utf-8"
?>
|
3、在res/layout/main.xml中写入如下内容:
|
<?xml version=
"1.0"
encoding=
"utf-8"
?>
<button>
</button>
<button>
</button>
|
4、在MainFrameAnimation.javaz中的内容如下:
4、运行程序,查看效果:
![32.png 32.png](http://www.eoeandroid.com/data/attachment/forum/201206/25/1640382h86f0w2bv8g0lvn.png)
![33.png 33.png](http://www.eoeandroid.com/data/attachment/forum/201206/25/164039afbqpx4ahkyydrbe.png)
换个背景再来一张,可以看到png动画的透明就是不一般^_^
![34.png 34.png](http://www.eoeandroid.com/data/attachment/forum/201206/25/1640255ko53xrqrcrt6rcs.png)
顺便提一下,我的这些可爱的小狐狸图标,是在APNG这个项目中找到的,感兴趣的朋友去搜搜APNG吧。