您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 国内外标准规范 > Android开发实战(动画应用处理)
LOGO北京金企鹅文化发展中心过渡页TRANSITIONPAGE在多媒体领域,动画也是永远的话题之一。动画和简单的图像相比,更具有视觉冲击力。Android平台为我们提供了一套完整的动画框架,使得开发者可以用它来开发各种动画效果。在本章的内容中,将详细讲解在Android系统中实现动画效果的基本知识。动画应用处理Chapter10ContentsPart1Android动画基础Part2案例10-1:实现四种动画特效Part3案例10-2:实现键盘动画效果Part4综合实例:月食动画效果第3页第4页第十章10.1Android动画基础10.1.1Drawable基础下面先通过一个简单的例子来理解它。在这个例子中,使用Drawable类的子类ShapeDrawable来画图,具体代码如上:publicclasstestViewextendsView{privateShapeDrawablemDrawable;publictestView(Contextcontext){super(context);intx=10;inty=10;intwidth=300;intheight=50;mDrawable=newShapeDrawable(newOvalShape());mDrawable.getPaint().setColor(0xff74AC23);mDrawable.setBounds(x,y,x+width,y+height);}protectedvoidonDraw(Canvascanvas){super.onDraw(canvas);canvas.drawColor(Color.WHITE);//画白色背景mDrawable.draw(canvas);}}第5页第十章10.1Android动画基础10.1.1Drawable基础创建一个OvalShape(椭圆);使用刚创建的OvalShape构造一个ShapeDrawable对象mDrawable;设置mDrawable的颜色;设置mDrawable的大小;将mDrawable绘制在testView的画布上。上述代码的实现流程如下:第6页第十章10.1Android动画基础10.1.1Drawable基础执行效果如图所示:通过这个简单的例子可以帮我们理解什么是Drawable,Drawable就是一个可画的对象,可能是一张位图(BitmapDrawable),也可能是一个图形(ShapeDrawable),还有可能是一个图层(LayerDrawable)。在项目中可以根据画图的需求,创建相应的可画对象,就可以将这个可画对象当作一块“画布(Canvas)”,在其上操作可画对象,并最终将这种可画对象显示在画布上,有点类似于“内存画布”。第7页第十章10.1Android动画基础10.1.2TweenAnimation动画前面我们学习了使用Drawable实现动画效果的知识。其实Drawable更加强大的功能是可以显示Animation。在AndroidSDK中提供了两种Animation:TweenAnimation和FrameAnimation。由此可见,在Android平台中提供了如下两类动画:Frame动画:用于顺序播放事先做好的图像,又称“逐帧动画”。Tween动画:用于对场景里的对象不断进行图像变换来产生动画效果,Tween可以把对象进行缩小、放大、旋转和渐变等操作,又称“补间动画”。第8页第十章10.1Android动画基础10.1.2TweenAnimation动画提示:Animation是以XML格式定义的,由于TweenAnimation与FrameAnimation的定义、使用都有很大的差异,所以特意将定义好的XML文件存放在“res\anim”目录中。在Android多媒体开发应用中,使用Frame动画的基本流程如下:(1)首先创建一个AnimationDrawable对象来表示Frame动画。(2)然后通过addFrame方法把每一帧要显示的内容添加进去。(3)最后通过start方法就可以播放这个动画了,同时还可以通过setOneShot方法设置是否重复播放。ContentsPart1Android动画基础Part2案例10-1:实现四种动画特效Part3案例10-2:实现键盘动画效果Part4综合实例:月食动画效果第9页第10页第十章10.2案例10-1:实现四种动画特效10.2.1设计目标在Android系统中,Tween动画是通过预先定义一组指令,这些指令指定了图形变换的类型、触发时间、持续时间。程序沿着时间线执行这些指令就可以实现动画效果。下面将通过一个演示实例来讲解实现四种Tween动画效果的方法。我们首先定义Animation动画对象,然后设置该动画的一些属性,最后通过startAnimation方法来开始动画效果第11页第十章10.2案例10-1:实现四种动画特效10.2.2具体实现(1)首先编写四种动画效果的文件,他们统一放在res/anim文件夹下面。编写文件my_alpha_action.xml,实现Alpha渐变透明度动画效果,主要实现代码如下:?xmlversion=1.0encoding=utf-8?setxmlns:android=本实例的具体实现流程如下:alphaandroid:fromAlpha=0.1android:toAlpha=1.0android:duration=3000/!--透明度控制动画效果alpha浮点型值:fromAlpha属性为动画起始时透明度toAlpha属性为动画结束时透明度说明:0.0表示完全透明1.0表示完全不透明第12页第十章10.2案例10-1:实现四种动画特效10.2.2具体实现说明:0.0表示完全透明1.0表示完全不透明以上值取0.0-1.0之间的float数据类型的数字长整型值:duration属性为动画持续时间说明:时间以毫秒为单位--/set第13页第十章10.2案例10-1:实现四种动画特效10.2.2具体实现(2)编写文件my_rotate_action.xml,实现Rotate画面转移旋转动画效果,主要实现代码如下:?xmlversion=1.0encoding=utf-8?setxmlns:android=:interpolator=@android:anim/accelerate_decelerate_interpolatorandroid:fromDegrees=0android:toDegrees=+350“android:pivotX=50%android:pivotY=50%android:duration=3000/!--rotate旋转动画效果属性:interpolator指定一个动画的插入器第14页第十章10.2案例10-1:实现四种动画特效10.2.2具体实现accelerate_decelerate_interpolator加速-减速动画插入器accelerate_interpolator加速动画插入器decelerate_interpolator减速动画插入器浮点数型值:fromDegrees属性为动画起始时物件的角度toDegrees属性为动画结束时物件旋转的角度,可以大于360度当角度为负数——表示逆时针旋转当角度为正数——表示顺时针旋转pivotX:属性为动画相对于物件的X坐标的开始位置pivotY:属性为动画相对于物件的Y坐标的开始位置说明:以上两个属性值从0%-100%中取值,50%为物件的X或Y方向坐标上的中点位置长整型值:duration属性为动画持续时间,时间以毫秒为单位。--/set第15页第十章10.2案例10-1:实现四种动画特效10.2.2具体实现(3)编写文件my_scale_action.xml,实现Scale渐变尺寸伸缩动画效果,主要实现代码如下:?xmlversion=1.0encoding=utf-8?setxmlns:android=:interpolator=@android:anim/accelerate_decelerate_interpolatorandroid:fromXScale=0.0android:toXScale=1.4“android:fromYScale=0.0“android:toYScale=1.4android:pivotX=50%android:pivotY=50%android:fillAfter=falseandroid:duration=700//set第16页第十章10.2案例10-1:实现四种动画特效(3)编写文件my_scale_action.xml,实现Scale渐变尺寸伸缩动画效果,主要实现代码如下:?xmlversion=1.0encoding=utf-8?setxmlns:android=:interpolator=@android:anim/accelerate_decelerate_interpolatorandroid:fromXScale=0.0android:toXScale=1.4“android:fromYScale=0.0“android:toYScale=1.4android:pivotX=50%android:pivotY=50%android:fillAfter=falseandroid:duration=700//set10.2.2具体实现第17页第十章10.2案例10-1:实现四种动画特效10.2.2具体实现!--尺寸伸缩动画效果scalefromXScale属性为动画起始时X坐标上的伸缩尺寸toXScale属性为动画结束时X坐标上的伸缩尺寸fromYScale属性为动画起始时Y坐标上的伸缩尺寸toYScale属性为动画结束时Y坐标上的伸缩尺寸说明:以上四种属性值0.0表示收缩到没有1.0表示正常无伸缩值小于1.0表示收缩值大于1.0表示放大fillAfter属性当设置为true,该动画转化在动画结束后被应用--第18页第十章10.2案例10-1:实现四种动画特效(4)编写文件my_translate_action.xml,实现Translate画面转移位置移动动画效果,主要实现代码如下:?xmlversion=1.0encoding=utf-8?setxmlns:android=:fromXDelta=30android:toXDelta=-80android:fromYDelta=30android:toYDelta=300android:duration=2000/!--translate位置转移动画效果fromXDelta属性为动画起始时X坐标上的位置toXDelta属性为动画结束时X坐标上的位置fromYDelta属性为动画起始时Y坐标上的位置toYDelta属性为动画结束时Y坐标上的位置说明:没有指定fromXTypetoXTypefromYTypetoYType时候,默认是以自己为相对参照物--/set10.2.2具体实现第19页第十章10.2案例10-1:实现四种动画特效(5)编写mian.xml文件,实现四种动画对应的四个按钮,具体代码如下所示:AbsoluteLayoutandroid:
本文标题:Android开发实战(动画应用处理)
链接地址:https://www.777doc.com/doc-4976693 .html