Android开发实战(动画应用处理)ppt课件_第1页
Android开发实战(动画应用处理)ppt课件_第2页
Android开发实战(动画应用处理)ppt课件_第3页
Android开发实战(动画应用处理)ppt课件_第4页
Android开发实战(动画应用处理)ppt课件_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、在多媒体领域,动画也是永远的话题之一。动画和简单的图像相比,更具有视觉冲击力。Android平台为我们提供了一套完整的动画框架,使得开发者可以用它来开发各种动画效果。在本章的内容中,将详细讲解在Android系统中实现动画效果的基本知识,动画应用处理,Chapter 10,10.1.1 Drawable基础,下面先通过一个简单的例子来理解它。在这个例子中,使用Drawable类的子类ShapeDrawable来画图,具体代码如上,public class testView extends View private ShapeDrawable mDrawable; public testView

2、(Context context) super(context); int x = 10; int y = 10; int width = 300; int height = 50; mDrawable = new ShapeDrawable(new OvalShape(,mDrawable.getPaint().setColor(0 xff74AC23); mDrawable.setBounds(x, y, x + width, y + height); protected void onDraw(Canvas canvas) super.onDraw(canvas); canvas.dra

3、wColor(Color.WHITE); /画白色背景 mDrawable.draw(canvas);,10.1.1 Drawable基础,01,创建一个OvalShape(椭圆,02,使用刚创建的OvalShape构造一个ShapeDrawable对象mDrawable,03,设置mDrawable的颜色,04,设置mDrawable的大小,05,将mDrawable绘制在testView的画布上,上述代码的实现流程如下,10.1.1 Drawable基础,执行效果如图所示,10.1.2 Tween Animation动画,前面我们学习了使用Drawable实现动画效果的知识。其实Drawa

4、ble更加强大的功能是可以显示Animation。在Android SDK中提供了两种Animation:Tween Animation和Frame Animation。由此可见,在Android平台中提供了如下两类动画,Frame动画: 用于顺序播放事先做好的图像,又称“逐帧动画,Tween动画: 用于对场景里的对象不断进行图像变换来产生动画效果,Tween可以把对象进行缩小、放大、旋转和渐变等操作,又称“补间动画,10.1.2 Tween Animation动画,提示:Animation是以XML格式定义的,由于Tween Animation与Frame Animation的定义、使用都有

5、很大的差异,所以特意将定义好的XML文件存放在“resanim”目录中,10.2.1 设计目标,10.2.2 具体实现,1)首先编写四种动画效果的文件,他们统一放在res/anim文件夹下面。编写文件my_alpha_action.xml,实现Alpha渐变透明度动画效果,主要实现代码如下:,本实例的具体实现流程如下,!- 透明度控制动画效果 alpha 浮点型值: fromAlpha属性为动画起始时透明度 toAlpha属性为动画结束时透明度 说明: 0.0表示完全透明 1.0表示完全不透明,10.2.2 具体实现,说明: 0.0表示完全透明 1.0表示完全不透明 以上值取0.0-1.0之间

6、的float数据类型的数字 长整型值: duration 属性为动画持续时间 说明: 时间以毫秒为单位-,10.2.2 具体实现,2)编写文件my_rotate_action.xml,实现Rotate画面转移旋转动画效果,主要实现代码如下: rotate,android:interpolator=android:anim/accelerate_decelerate_interpolator android:fromDegrees=0 android:toDegrees=+350“ android:pivotX=50% android:pivotY=50% android:duration=30

7、00 / !- rotate 旋转动画效果 属性: interpolator指定一个动画的插入器,10.2.2 具体实现,accelerate_decelerate_interpolator 加速-减速动画插入器 accelerate_interpolator加速动画插入器 decelerate_interpolator减速动画插入器 浮点数型值: fromDegrees属性为动画起始时物件的角度 toDegrees属性为动画结束时物件旋转的角度,可以大于360度 当角度为负数表示逆时针旋转 当角度为正数表示顺时针旋转,pivotX: 属性为动画相对于物件的X坐标的开始位置 pivotY: 属

8、性为动画相对于物件的Y坐标的开始位置 说明:以上两个属性值从0%-100%中取值,50%为物件的X或Y方向坐标上的中点位置 长整型值:duration属性为动画持续时间,时间以毫秒为单位。-,10.2.2 具体实现,3)编写文件my_scale_action.xml,实现Scale渐变尺寸伸缩动画效果,主要实现代码如下: scale android:interpolator=android:anim/accelerate_decelerate_interpolator,android:fromXScale=0.0 android:toXScale=1.4“ android:fromYScale

9、=0.0“ android:toYScale=1.4 android:pivotX=50% android:pivotY=50% android:fillAfter=false android:duration=700 /,3)编写文件my_scale_action.xml,实现Scale渐变尺寸伸缩动画效果,主要实现代码如下: scale android:interpolator=android:anim/accelerate_decelerate_interpolator,android:fromXScale=0.0 android:toXScale=1.4“ android:fromYS

10、cale=0.0“ android:toYScale=1.4 android:pivotX=50% android:pivotY=50% android:fillAfter=false android:duration=700 /,10.2.2 具体实现,10.2.2 具体实现,4)编写文件my_translate_action.xml,实现Translate画面转移位置移动动画效果,主要实现代码如下: translate android:fromXDelta=30 android:toXDelta=-80 android:fromYDelta=30,android:toYDelta=300

11、android:duration=2000/,10.2.2 具体实现,5)编写mian.xml文件,实现四种动画对应的四个按钮,具体代码如下所示: TextView android:id=+id/widget29,android:layout_width=fill_parent android:layout_height=wrap_content android:text=string/hello android:layout_x=0px android:layout_y=0px Button android:id=+id/button_Alpha android:layout_width=1

12、50px android:layout_height=150px,10.2.2 具体实现,android:text=Alpha动画 android:textSize=50px android:layout_x=0px android:layout_y=30px Button android:id=+id/button_Scale android:layout_width=150px android:layout_height=150px“ android:text=Scale动画 android:textSize=50px,android:layout_x=0px android:layout

13、_y=180px,10.2.2 具体实现,10.2.2 具体实现,6)编写myActionAnimation.java文件,使用case语句根据用户的选择来显示对应的动画效果。主要实现代码如下: package zyf.myActionAnimation; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.view.animation.Animation,import a

14、ndroid.view.animation.AnimationUtils; import android.widget.Button; public class myActionAnimation extends Activity implements OnClickListener /* Called when the activity is first created. */ private Button button_alpha; private Button button_scale; private Button button_translate; private Button bu

15、tton_rotate,10.2.2 具体实现,private Animation myAnimation_Alpha; private Animation myAnimation_Scale; private Animation myAnimation_Translate; private Animation myAnimation_Rotate; Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main);

16、 button_alpha = (Button) findViewById(R.id.button_Alpha,button_alpha.setOnClickListener(this); button_scale = (Button) findViewById(R.id.button_Scale); button_scale.setOnClickListener(this); button_translate = (Button) findViewById(R.id.button_Translate); button_translate.setOnClickListener(this); b

17、utton_rotate = (Button) findViewById(R.id.button_Rotate); button_rotate.setOnClickListener(this);,10.2.2 具体实现,public void onClick(View button) switch (button.getId() case R.id.button_Alpha: myAnimation_Alpha = AnimationUtils.loadAnimation(this,R.anim.my_alpha_action); button_alpha.startAnimation(myA

18、nimation_Alpha); break; case R.id.button_Scale:,myAnimation_Scale= AnimationUtils.loadAnimation(this,R.anim.my_scale_action); button_scale.startAnimation(myAnimation_Scale); break; case R.id.button_Translate: myAnimation_Translate=AnimationUtils.loadAnimation(this,R.anim.my_translate_action,10.2.2 具

19、体实现,button_translate.startAnimation(myAnimation_Translate); break; case R.id.button_Rotate: myAnimation_Rotate= AnimationUtils.loadAnimation(this,R.anim.my_rotate_action); button_rotate.startAnimation(myAnimation_Rotate); break;default: break;,10.2.2 具体实现,10.2.2 具体实现,执行后的效果如图a所示。单击屏幕中的的按钮会显示对应的动画效果,

20、例如单击【Rotate动画】选项后的效果如图b所示,a. 执行效果,b. Translate动画效果,10.2.3 相关知识点,在Android系统中,Tween动画通过对View的内容实现了一系列的的图形变换操作,通过平移、缩放、旋转、改变透明度来实现动画效果。 在XML文件中,Tween动画主要包括以下四种动画效果,10.2.3 相关知识点,AlphaAnimation: 渐变透明度动画效果,TranslateAnimation: 画面转换位置移动动画效果,ScaleAnimation: 渐变尺寸伸缩动画效果,RotateAnimation: 画面转移旋转动画效果,在Android应用代码

21、中,Tween动画对应以下四种动画效果,10.3.1 设计目标,android.view.animation.AlphaAnimation; import android.view.animation.Animation; import android.view.animation.RotateAnimation; import android.view.animation.ScaleAnimation; import android.view.animation.TranslateAnimation; /* 定义Alpha动画 */ private AnimationmAnimationAl

22、pha= null,package com.TweenL; import com.TweenL.R; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.drawable.BitmapDrawable; import android.view.KeyEvent; import android.view.View; import,实例文件TweenL.java的主要实现代码如下,10.3.2 具体实现,publ

23、ic example9(Context context) super(context); /* 装载资源,载入drawable文件夹中的android图片*/ mBitQQ = (BitmapDrawable) getResources().getDrawable(R.drawable.android).getBitmap(); public void onDraw(Canvas canvas) super.onDraw(canvas,* 定义Scale动画 */ private AnimationmAnimationScale= null; /* 定义Translate动画 */ priva

24、te AnimationmAnimationTranslate= null; /* 定义Rotate动画 */ private AnimationmAnimationRotate= null; /* 定义Bitmap对象 */ Bitmap mBitQQ = null,10.3.2 具体实现,* 开始播放动画 */this.startAnimation(mAnimationTranslate); break; case KeyEvent.KEYCODE_DPAD_RIGHT: /* 创建Rotate动画 */ mAnimationRotate=new RotateAnimation(0.0f,

25、 +360.0f, Animation.RELATIVE_TO_SELF,0.5f, Animation.RELATIVE_TO_SELF, 0.5f,* 设置动画的时间 */ mAnimationScale.setDuration(500); /* 开始播放动画 */ this.startAnimation(mAnimationScale); break; case KeyEvent.KEYCODE_DPAD_LEFT: /* 创建Translate动画 */ mAnimationTranslate = new TranslateAnimation(10, 100,10, 100); /*

26、设置动画的时间 */ mAnimationTranslate.setDuration(1000,10.3.2 具体实现,执行后可以通过键盘的上下左右键实现动画效果,如图所示,* 设置动画的时间 */ mAnimationRotate.setDuration(1000); /* 开始播放动画 */ this.startAnimation(mAnimationRotate); break; return true;,10.3.2 具体实现,10.3.3 相关知识点,在Android系统中,所有其他一些动画类都要继承类Animation中的实现方法。类Animation主要用于补间动画效果,提供了动

27、画启动、停止、重复、持续时间等方法。在类Animation中的方法适用于任何一种补间动画对象,此类中的常用方法如下,在Android系统中的Tween动画应用中,存在如下所示的应用类,10.3.3 相关知识点,10.3.3 相关知识点,10.3.3 相关知识点,10.3.3 相关知识点,10.3.3 相关知识点,AlphaAnimation类是Android系统中的透明度变化动画类,用于控制View对象的透明度变化。此类中最常用的方法便是AlphaAnimation构造方法,函数原型如下: AlphaAnimation(float fromAlpha, float toAlpha,功能是构建一

28、个渐变透明度动画,各个参数的具体说明如下: fromAlpha:表示动画起始透明度。 toAlpha:表示动画结束透明度,其中0.0表示完全透明,1.0表示完全不透明,ScaleAnimation类是尺寸变化动画类,用于控制View对象的尺寸变化。ScaleAnimation类的构造方法为ScaleAnimation,函数原型如下: ScaleAnimation(float fromX, float toX, float fromY, float toY,int pivotXType,float pivotXValue, int pivotYType, float pivotYValue,功能

29、是构建一个渐变尺寸伸缩动画,各个参数的具体说明如下: fromX和toX:分别表示起始和结束时X坐标上的伸缩尺寸。 fromY和toY:分别表示起始和结束时Y坐标上的伸缩尺寸。 pivotXValue和pivotYValue:分别表示动画相对于物件的X、Y坐标的开始位置。 pivotYType和pivotXType:分别表示X、Y的伸缩模式,10.3.3 相关知识点,位置变化类TranslateAnimation用于控制View对象的位置变化。TranslateAnimation类的构造方法为TranslateAnimation,函数原型如下: TranslateAnimation(float

30、 fromXDelta, float toXDelta, float fromYDelta, float toYDelta,功能是构建一个画面转换位置移动动画,各个参数的具体说明如下: fromXDelta:表示起始坐标。 toXDelta:表示结束坐标,10.3.3 相关知识点,旋转变化动画类RotateAnimation用于控制View对象的旋转动作。构造方法为RotateAnimation,函数原型如下: RotateAnimation(float fromDegress, float toDegress, int pivotXType, float pivotXValue, int p

31、ivotYType, float pivotYValue,功能是构建一个旋转动画,各个参数的具体说明如下: fromDegress:表示开始的角度。 toDegress:表示结束的角度。 pivotXType和pivotYType:分别表示x、y的伸缩模式。 pivotXValue和pivotYValue:分别表示伸缩动画相对于x、y的坐标的开始位置,10.3.3 相关知识点,10.4.1 实例目标,10.4.2 具体实现,* 定义AnimationDrawable动画 */ private AnimationDrawableframeAnimation= null; ContextmCont

32、ext= null; /* 定义一个Drawable对象 */ Drawable mBitAnimation = null; public FrameL(Context context) super(context); mContext = context,* 实例化AnimationDrawable对象 */ frameAnimation = new AnimationDrawable(); /* 装载资源 */ /这里用一个循环装载了所有名字类似的资源 /如“a1.10.png”的图片 /这个方法用处非常大 for (int i = 1; i = 15; i+) int id = getR

33、esources().getIdentifier(a + i, drawable, mContext.getPackageName(,实例文件FrameL.java的主要实现代码如下,10.4.2 具体实现,mBitAnimation = getResources().getDrawable(id); /* 为动画添加一帧 */ /参数mBitAnimation是该帧的图片 /参数500是该帧显示的时间,按毫秒计算 frameAnimation.addFrame(mBitAnimation, 500); /* 设置播放模式是否循环,false表示循环而true表示不循环 */ frameAnimation.setOneShot( false ); /* 设置本类将要显示这个动画 */ this.setBackgroundDrawable(frameAn

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论