欢迎来到天天文库
浏览记录
ID:13866402
大小:42.50 KB
页数:3页
时间:2018-07-24
《android画图学习总结(四)——animation(下)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Android画图学习总结(四)——Animation(下)By:海市蜃楼
2、In:Android开发在Android画图学习总结(四)——Animation(上)中,我们详细介绍了Tween Aniamation,这里我们将介绍另外一种动画FrameAnimation。在前面已经说过,FrameAnimation是顺序播放事先做好的图像,跟电影类似。不同于animationpackage,AndroidSDK提供了另外一个类AnimationDrawable来定义、使用FrameAnimation。FrameAnimation可以在XMLResource定义(还是存放到resanim文
3、件夹下),也可以使用AnimationDrawable中的API定义。由于TweenAnimation与FrameAnimation有着很大的不同,因此XML定义的格式也完全不一样,其格式是:首先是animation-list根节点,animation-list根节点中包含多个item子节点,每个item节点定义一帧动画:当前帧的drawable资源和当前帧持续的时间。下面对节点的元素加以说明:XML属性说明drawable当前帧引用的drawable资源duration当前帧显示的时间(毫秒为单位)oneshot如果为true,表示动画只播放一次停止在最后一帧上,如果设置为false表
4、示动画循环播放。variablePaddingIftrue,allowsthedrawable’spaddingtochangebasedonthecurrentstatethatisselected.visible规定drawable的初始可见性,默认为flase;下面就给个具体的XML例子,来定义一帧一帧的动画:5、rust1″android:duration=”200″/>上面的XML就定义了一个FrameAnimation,其包含3帧动画,3帧动画中分别应用了drawable中的3张图片:rocket_thrust1,rocket_thrust2,rocket_thrust3,每6、帧动画持续200毫秒。然后我们将以上XML保存在res/anim/文件夹下,命名为rocket_thrust.xml,显示动画的代码,如下:在OnCreate()中增加如下代码:ImageViewrocketImage=(ImageView)findViewById(R.id.rocket_image);rocketImage.setBackgroundResource(R.anim.rocket_thrust);rocketAnimation=(AnimationDrawable)rocketImage.getBackground();最后还需要增加启动动画的代码:publicbool7、eanonTouchEvent(MotionEventevent){if(event.getAction()==MotionEvent.ACTION_DOWN){rocketAnimation.start();returntrue;}returnsuper.onTouchEvent(event);}代码运行的结果想必大家应该就知道了(3张图片按照顺序的播放一次),不过有一点需要强调的是:启动FrameAnimation动画的代码rocketAnimation.start();不能在OnCreate()中,因为在OnCreate()中AnimationDrawable还没有完全的与Imag8、eView绑定,在OnCreate()中启动动画,就只能看到第一张图片。下面,阅读AndroidSDK中对AnimationDrawable的介绍,有个简单的了解:AnimationDrawable获取、设置动画的属性intgetDuration()获取动画的时长intgetNumberOfFrames()获取动画的帧数booleanisOneShot()VoidsetOneShot(booleanoneshot)获取oneshot
5、rust1″android:duration=”200″/>上面的XML就定义了一个FrameAnimation,其包含3帧动画,3帧动画中分别应用了drawable中的3张图片:rocket_thrust1,rocket_thrust2,rocket_thrust3,每
6、帧动画持续200毫秒。然后我们将以上XML保存在res/anim/文件夹下,命名为rocket_thrust.xml,显示动画的代码,如下:在OnCreate()中增加如下代码:ImageViewrocketImage=(ImageView)findViewById(R.id.rocket_image);rocketImage.setBackgroundResource(R.anim.rocket_thrust);rocketAnimation=(AnimationDrawable)rocketImage.getBackground();最后还需要增加启动动画的代码:publicbool
7、eanonTouchEvent(MotionEventevent){if(event.getAction()==MotionEvent.ACTION_DOWN){rocketAnimation.start();returntrue;}returnsuper.onTouchEvent(event);}代码运行的结果想必大家应该就知道了(3张图片按照顺序的播放一次),不过有一点需要强调的是:启动FrameAnimation动画的代码rocketAnimation.start();不能在OnCreate()中,因为在OnCreate()中AnimationDrawable还没有完全的与Imag
8、eView绑定,在OnCreate()中启动动画,就只能看到第一张图片。下面,阅读AndroidSDK中对AnimationDrawable的介绍,有个简单的了解:AnimationDrawable获取、设置动画的属性intgetDuration()获取动画的时长intgetNumberOfFrames()获取动画的帧数booleanisOneShot()VoidsetOneShot(booleanoneshot)获取oneshot
此文档下载收益归作者所有