机工社Android移动应用开发教学课件u8

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

动画
• 逐帧动画是按照准备好的静态图像顺序播放的,利用人眼的“视觉暂留”原理,造成动画的错觉。逐帧 动画的原理与放胶片看电影的原理是一样的,它们都是一张一张地播放事先准备好的静态图像。在 Android中逐帧动画需要得到AnimationDrawable类的支持,AnimationDrawable类主要用来创建一个 逐帧动画,并且可以对帧进行拉伸。在程序中获取AnimationDrawable对象后,把该对象设置为 ImageView的背景即可使用AnimationDrawable.start()方法播放逐帧动画。
控制Matrix进行depress角度的旋转,轴 心为(px,py)
setScale(float sx,float sy) setScale(float sx,float sy,float px,float py)
设置Matrix进行缩放,sx、sy为X、Y方向上的缩放比例 设置Matrix以(px,py)为轴心进行缩放,sx、sy为X、Y方向上 的缩放比例
Path类
• Path类是一个非常有用的类,它可以预先在View上将N个 点连成一条“路径”,然后调用Canvas的 drawPath(path,paint)方法即可沿着路径绘制图形。实际上除了Path类,Android还为路径绘制提供了 PathEffect类来定义绘制效果,而PathEffect包含了如下几种绘制效果,每一种都是它的子类,具体如 下: ComposePathEffect; CornerPathEffect; DashPathEffect; DiscretePathEffect; PathDashPathEffect; SumPathEffect。
对源位图src缩放成宽为w,高为h的新位 图
创建一个宽w,高h的新位图(config为位 图的内部配置枚举类)
从源位图src的指定坐标(x,y)开始,截取宽 w,高h的部分,按照Matrix变换创建新的 位图对象
创建Bitmap时一般不调用其构造方法,可通过两种方式创建Bitmap对象。通过Bitmap的静态方法 static Bitmap createBitmap()或通过BitmapFactory工厂类的static Bitmap decodeXxx()来创建该类的对 象,创建位图的静态方法见表
R.anim.scale_animation); ivBean.startAnimation(scale); break; case R.id.btn_four: //点击按钮使图片移动 Animation translate = AnimationUtils.loadAnimation(this,
setRotate(float degrees) setRotate(float degrees,float px,float py)
说明
控制Matrix进行位移 控制Matrix进行倾斜,kx、ky为X、Y方向上的比例 控制Matrix以px、py为轴心进行倾斜,kx、ky为X、Y方向上 的倾斜比例 控制Matrix进行depress角度的旋转,轴心为(0,0)
1.Bitmap类的使用
方法名(部分方法) createBimap(Bitmap src) createBitmap(Bitmap src,int x ,int y,int w,int h)
createScaledBitmap(Bitmap src,int w ,int h,boolean filter)
R.anim.translate_animation); ivBean.startAnimation(translate); break; } }
属性动画
• 属性动画既可作用于UI组件,也可以作用于普通对象。定义属性动画可以使用ValueAnimator或 ObjectAnimator的静态工厂方法创建动画。 • 使用属性动画的步骤如下。 • 1)创建ValueAnimator或ObjectAnimator对象。 • 2)根据需要为Animator对象设置属性。 • 3)如果需要监听Animator的动画开始事件、动画结束事件、动画重复事件、动画值改变事件,并 根据事件提供相应的处理代码,则应该为Animator对象设置事件监听器。 • 4)如果有多个动画需要按次序或同时播放,则需要使用AnimatorSet。 • 5)调用Animator对象的start()方法启动动画。
break; case R.id.btn_two:
//点击按钮使图片旋转 Animation rotate = AnimationUtils.loadAnimation(this,
R.anim.rotate_animation); ivBean.startAnimation(rotate); break; case R.id.btn_three: //点击按钮使图片缩放 Animation scale = AnimationUtils.loadAnimation(this,
说明
使用方法
透明度改变的动 指定开始与结束时的透明度以及动画持续时间,

透明度可从0到1
大小缩放的动画 指定开始与结束时的缩放比以及动画持续时间,
pivotX、pivotY指定缩放中心坐标
位移变化的动画 指定开始与结束时的位置坐标以及动画持续时间
RotateAnimation
旋转动画
指定开始与结束的旋转角度以及动画持续时间, pivotX、pivotY指定旋转轴心坐标
方法名(部分方法) decodeByteArray(byte[] data, int offset, int length)
用法说明 从指定字节数组的offset位置开始,将长度 为length的数据解析成位图
decodeFile(String pathName)
从pathName对应的文件解析成的位图对象
设置画笔拐弯处的连接风格
setPathEffect(PathEffect effect)
说明
设置颜色 设置是否抗锯齿 设置画笔的填充效果 设置画笔的笔触宽度
设置绘制路径时的路径效果
使用画布绘制圆形
public class CircleView extends View { public CircleView(Context context) { super(context); } public CircleView(Context context, @Nullable
drawCircle(float cx, float cy, float radius, Paint paint)
drawLine(float startX, float startY, float stopX, float stopY, Paint paint)
drawPoint(float x, float y, Paint paint)
说明
绘制圆弧
在指定点绘制位图 从指定点绘制一个圆 绘制一条直线 绘制一个点
部分方法 setARGB(int a, int r, int g, int b)/setColor(int color) setAntiAlias(boolean aa) setShader(Shader shader) setStrokeWidth(float width) setStrokeJoin(Paint.Join join)
8.1.2 绘图
1.Android绘图基础:Canvas、Paint等
部分方法 drawArc(RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint) drawBitmap(Bitmap bitmap, float left, float top, Paint paint)
使用补间动画实现图片的渐变、缩放、旋转和 平移
switch (v.getId()) {
case R.id.btn_one: //使用Java代码实现动画
AlphaAnimation alphaAnimation = new AlphaAnimation(0.0f,1.0f); alphaAnimation.setDuration(2000); alphaAnimation.setRepeatMode(AlphaAnimation.REVERSE); alphaAnimation.setRepeatCount(AlphaAnimation.INFINITE); ivBean.startAnimation(alphaAnimation);
• animation = (AnimationDrawable) iv_anim.getBackground(); • if (!animation.isRunning())
{
// 动 画 没 有 在 播 放 状 态 , 则 播 放
animation.start(); •}
补间动画
• 补间动画是指开发者只需设置动画开始、动画结束等关键帧,而动画变化的中间帧是由系统计算并 补齐。通过对View进行一系列的图形变化来实现动画效果,其中图形变化包括平移、缩放、旋转、改 变透明度等。
8.1.3 Matrix类
• Matrix是“矩阵”的意思,在Android中提供了Matrix类对图片添加特效,它对图片的处理有四个基本 操作,如平移(Translate)、缩放(Scale)、旋转(Rotate)、倾斜( Skew)。
部分方法 setTranslate(float dx,float dy) setSkew(float kx,float ky) setSkew(ห้องสมุดไป่ตู้loat kx,float ky,float px,float py)
createBitmap(int w ,int h,Bitmap.Config config)
createBitmap(Bitmap src,int x ,int y,int w,int h,Matrix m,boolean filter)
用法说明
复制位图 从源位图src的指定坐标(x,y)开始,截取宽 w,高h的部分,用于创建新的位图对象
• 对补间(Tween)动画而言,开发者无须像逐帧动画那样定义动画过程中的每一帧,只要定义动画 开始和结束的关键帧,并设置动画的持续时间即可。而中间的变化过程需要的帧是通过Animation类 支持的。
子类 AlphaAnimation
ScaleAnimation
TranslateAnimation
decodeFileDescriptor(FileDescriptor fd) decodeResource(Resource res,int id) decodeStream(InputStream in)
从FileDescriptor中解析成的位图对象 根据给定的资源Id解析成位图 把输入流解析成位图
图像与多媒体应用
学习目标
• 1)了解位图的使用。 • 2.)掌握Android中绘图的方法。 • 3)掌握图像添加动画的方法。 • 4)掌握多媒体控件的使用。
8.1 图像与绘图
• Android应用开发中会用到各种图片,包括.png、.gif、.9.png、.jpg和各种Drawable系对象,还包括 位图Bitmap,而且对图片的处理也是一个影响程序的高效性和健壮性的重要因素。在绘制图像时经常 使用Bitmap、BitmapFactory、Paint、Canvas和Matrix类。 • Bitmap代表一张位图,扩展名可以是.bmp或者.dib。位图是Windows标准格式图形文件,它将图像定 义为由点(像素)组成,每个点可以由多种色彩表示,包括2、4、8、16、24和32位色彩。
AttributeSet attrs) { super(context, attrs);
} @Override protected void onDraw(Canvas canvas) {
super.onDraw(canvas); Paint paint = new Paint( ); //创建画笔 paint.setColor(Color.GREEN); canvas.drawCircle(300,300,300,paint); //绘制圆形 } }
相关文档
最新文档