Android移动开发图形图像处理_第1页
Android移动开发图形图像处理_第2页
Android移动开发图形图像处理_第3页
Android移动开发图形图像处理_第4页
Android移动开发图形图像处理_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

第一零章图形图像处理《Android移动开发》学目地/Target掌握常用绘图类地使用,能够绘制不同地图形掌握Matrix类地使用方式,能够实现为图片添加特效地功能掌握动画地使用,能够实现补间动画与逐帧动画地效果章节概述/Summary图形图像在Android应用会经常用到,如一些程序地图标,界面地美化等都离不开图形图像。Android系统对图形图像地处理非常强大,对于二D图像它没有沿用Java地图形处理类,而是使用了自定义地处理类,接下来本章将针对Android常用地绘图类,图形图像特效以及动画行讲解。目录/Contents零一零二零三常用地绘图类为图像添加特效动画常用地绘图类一零.一一零.一常用地绘图类

先定一个小目地!掌握常用绘图类地使用,能够绘制不同地图形Android常用地绘图类有Bitmap类,BitmapFactory类,Paint类以及Canvas类,通过对这几个类地使用可以分别实现创建位图,将指定资源解析为位图,创建画笔,绘制画布等功能。Bitmap类:可以获取图像文件信息,对图像行剪切,旋转,缩放等操作,并可以指定格式保存图像文件。BitmapFactory类:是位图工厂,它是一个工具类。Paint类:代表画笔,用来描述图形地颜色及风格。Canvas类:代表画布,通过该类提供地方法,可以绘制各种图形。一零.一常用地绘图类方法名称功能描述createBitmap(intwidth,intheight,Configconfig)创建位图,width代表要创建地图片地宽度,height代表高度,config代表图片地配置信息createBitmap(intcolors[],intoffset,intstride,intwidth,intheight,Configconfig)使用颜色数组创建一个指定宽高地位图,颜色数组地个数为width*heightcreateBitmap(Bitmapsrc)使用源位图创建一个新地位图createBitmap(Bitmapsource,intx,inty,intwidth,intheight)从源位图地指定坐标开始剪切指定宽高地一块图像,用于创建新地位图createBitmap(Bitmapsource,intx,inty,intwidth,intheight,Matrixm,booleanfilter)按照Matrix规则从源位图地指定坐标开始剪切指定宽高地一块图像,用于创建新地位图。createBitmap(intwidth,intheight,Configconfig)创建位图,width代表要创建地图片地宽度,height代表高度,config代表图片地配置信息一零.一.一Bitmap类Bitmap类提供了一些静态方法,具体如下表所示。Bitmap.Configconfig=Config.ARGB_四四四四;Bitmapbitmap=Bitmap.createBitmap(width,height,config);Bitmap地内部类表示每个像素点占用二个字节内存图片地宽度,高度以及配置信息一零.一.一Bitmap类实例化Bitmap类BitmapFactory类地常用方法Bitmapbitmap=BitmapFactory.decodeResource(this.getResources(),R.drawable.icon);通过decodeResource()方法将drawable文件夹地icon.png图片资源解码为位图方法名称功能描述decodeFile(StringpathName)将指定路径地文件解码为位图decodeStream(InputStreamis)将指定输入流解码为位图decodeResource(Resourcesres,intid)将给定地资源id解析为位图一零.一.二BitmapFactory类Paint类地常用方法方法名称功能描述setARGB(inta,intr,intg,intb)设置颜色,各参数值均为零~二五五之间地整数,几个参数分别用于表示透明度,红色,绿色与蓝色地值setColor(intcolor)设置颜色setAlpha(inta)设置透明度setAntiAlias(booleanaa)设置画笔是否使用抗锯齿功能setTextAlign(Alignalign)设置绘制文本时地文字对齐方式。参数值为Align.CENTER,Align.LEFT,Align.RIGHT,分别表示居,左或右对齐setTextSize(floattextSize)设置绘制文本时地文字大小setFakeBoldText(booleanfakeBoldText)设置绘制文字时是否为粗体文字setDither(booleandither)指定是否使用图像抖动处理,如果使用会使图像颜色更加滑,饱满,清晰setShadowLayer(floatradius,floatdx,floatdy,intcolor)设置阴影。radius表示阴影地角度,dx与dy表示阴影在x轴与y轴上地距离,color表示阴影地颜色setXfermode(Xfermodexfermode)设置图像地混合模式一零.一.三Paint类一零.一.三Paint类Paintpaint=newPaint();paint.setColor(Color.RED);指定画笔颜色为红色接下来定义一个画笔,并指定该画笔地颜色为红色,示例代码如下:Canvas类地常用方法方法名称功能描述drawRect(Rectr,Paintpaint)使用画笔绘制矩形drawOval(RectFoval,Paintpaint)使用画笔绘制椭圆形drawCircle(floatcx,floatcy,floatradius,Paintpaint)使用画笔在指定位置画出指定半径地圆drawLine(floatstartX,floatstartY,floatstopX,floatstopY,Paintpaint)使用画笔在指定位置画线drawRoundRect(RectFrect,floatrx,floatry,Paintpaint)使用画笔绘制指定圆角矩形,其rx表示X轴圆角半径,ry表示Y轴圆角半径一零.一.四Canvas类protectedvoidonDraw(Canvascanvas){super.onDraw(canvas);Paintpaint=newPaint();paint.setColor(Color.RED);Rectr=newRect(四零,四零,二零零,一零零);canvas.drawRect(r,paint);}创建画笔构建矩形对象并指定位置,宽高调用绘制矩形地方法一零.一.四Canvas类在View地onDraw()方法使用画笔Paint在画布上绘制矩形。本节我们将通过一个绘制小狗地案例来演示如何使用这些常用地绘图类,本案例地界面效果如下图所示。一创建程序:导入界面图片:创建名为DrawDog地程序指定包名为.itcast.drawdog二将界面图片导入到程序地drawable-hdpi文件夹一零.一.五实战演练—绘制小狗自定义View:三放置界面控件:四修改默认标题栏地名称:五修改程序地默认标题为绘制小狗放置自定义控件DrawView在程序自定义DrawView类在DrawView类重写onDraw()方法,在该方法实现对小狗图片地绘制操作。为图像添加特效一零.二一零.二为图像添加特效

先定一个小目地!掌握Matrix类地使用方式,能够实现为图片添加特效地功能特效方法名称功能描述移setTranslate(floatdx,floatdy)指定图像在X,Y轴移动dx与dy地距离preTranslate(floatdx,floatdy)使用前乘地方式计算在X,Y轴移地距离。postTranslate(floatdx,floatdy)使用后乘地方式计算在X,Y轴移地距离。旋转setRotate(floatdegrees)指定图片旋转degrees度preRotate(floatdegrees)使用前乘地方式指定图片旋转degrees度postRotate(floatdegrees,floatpx,floatpy)使用后乘地方式控制Matrix以参数px与py为轴心旋转degrees度缩放setScale(floatsx,floatsy)指定图像在X轴与Y轴地缩放比例为sx与sypreScale(floatsx,floatsy)使用前乘地方式计算图像在X轴与Y轴地缩放比例postScale(floatsx,floatsy)使用后乘地方式计算图像在X轴与Y轴地缩放比例倾斜setSkew(floatkx,floatky)指定图像在X,Y轴地倾斜值preScale(floatkx,floatky)使用前乘地方式设置图像在X,Y轴地倾斜值postScale(floatkx,floatky)使用后乘地方式设置图像在X,Y轴地倾斜值Matrix类实现特效地方法一零.二为图像添加特效接下来我们通过一个案例来演示如何使用Matrix类为图片添加特效。本案例地界面效果如下图所示。一创建程序:导入界面图片:创建名为SpecialEffect地程序指定包名为.itcast.specialeffect二将界面图片导入到程序地drawable-hdpi文件夹创建TranslateView类:三引用TranslateView类:四运行结果:五将TranslateView类引入到activity_main.xml创建TranslateView类继承View类在TranslateView类地onDraw()方法将图像移到(一零零,一零零)地位置。一零.二为图像添加特效运行程序原图与移后效果图对比动画一零.三一零.三动画

先定一个小目地!掌握动画地使用,能够实现补间动画与逐帧动画地效果一零.三动画补间动画通过对View行一系列地图形变化来实现动画效果,其图形变化包括移,缩放,旋转,改变透明度等。按照事先准备好地静态图像顺序播放地,利用眼地"视觉暂留"原理,让用户产生动画地错觉。逐帧动画在Android开发,避免不了用到动画,Android系统给我们提供了三种实现动画效果地方式,分别为补间动画,逐帧动画与属动画。属动画它是一种不断地对属值行操作地模式,也就是可以将值赋值到指定对象地指定属上,该指定属可以是任意对象地任意属。在Android,提供了四种补间动画:透明度渐变动画(AlphaAnimation)旋转动画(RotateAnimation)缩放动画(ScaleAnimation)移动画(TranslateAnimation)一零.三.一补间动画透明度渐变动画是通过改变View组件透明度来实现地渐变效果。它主要通过指定动画开始时View地透明度,结束时View地透明度以及动画持续时间来实现地。一零.三.一补间动画透明度渐变动画<?xmlversion="一.零"encoding="utf-八"?><setxmlns:android="http://schemas.android./apk/res/android"><alphaandroid:interpolator="@android:anim/linear_interpolator"android:repeatMode="reverse"android:repeatCount="infinite"android:duration="一零零零"android:fromAlpha="一.零"android:toAlpha="零.零"/></set>控制动画地变化速度(匀速)设置动画重复地方式(反向)设置动画重复次数(无限循环)指定动画播放时长指定动画开始时地透明度(不透明)指定动画结束时地透明度(透明)一零.三.一补间动画透明度渐变动画代码旋转动画是通过对View指定动画开始时地旋转角度,结束时地旋转角度以及动画播放时长来实现地。一零.三.一补间动画旋转动画<?xmlversion="一.零"encoding="utf-八"?><setxmlns:android="http://schemas.android./apk/res/android"><rotateandroid:fromDegrees="零"android:toDegrees="三六零"android:pivotX="五零%"android:pivotY="五零%"android:repeatMode="reverse"android:repeatCount="infinite"android:duration="一零零零"/></set>指定View在动画开始时地角度指定View在动画结束时地角度指定旋转点地X坐标指定旋转点地Y坐标一零.三.一补间动画旋转动画代码缩放动画是通过对动画指定开始时地缩放系数,结束时地缩放系数以及动画持续时长来实现地。一零.三.一补间动画缩放动画<?xmlversion="一.零"encoding="utf-八"?><setxmlns:android="http://schemas.android./apk/res/android"><scaleandroid:repeatMode="reverse"android:repeatCount="infinite"android:duration="三零零零"android:fromXScale="一.零"android:fromYScale="一.零"android:toXScale="零.五"android:toYScale="零.五"android:pivotX="五零%"android:pivotY="五零%"/></set>指定动画开始时X轴上地缩放系数(不变化)指定动画开始时Y轴上地缩放系数(不变化)一零.三.一补间动画指定动画结束时X轴上地缩放系数(缩小零.五倍)指定动画结束时Y轴上地缩放系数(缩小零.五倍)缩放动画代码移动画是通过指定动画地开始位置,结束位置以及动画持续时长来实现地。一零.三.一补间动画移动画一零.三.一补间动画移动画代码<?xmlversion="一.零"encoding="utf-八"?><setxmlns:android="http://schemas.android./apk/res/android"><translateandroid:fromXDelta="零.零"android:fromYDelta="零.零"android:toXDelta="一零零"android:toYDelta="零.零"android:repeatCount="infinite"android:repeatMode="reverse"android:duration="四零零零"/></set>指定动画开始时View地X轴坐标(原始位置)指定动画开始时View地Y轴坐标(原始位置)指定动画结束时View地X轴坐标指定动画结束时View地Y轴坐标(原始位置)接下来,我们通过一个案例来演示四种补间动画地效果。本案例地界面效果如下图所示。一创建程序:导入界面图片:创建名为Tween地程序指定包名为.itcast.tween二将界面图片导入到程序地drawable-hdpi文件夹放置界面控件:三创建补间动画地XML文件:四实现补间动画地效果:五放置一个ImageView控件放置四个Button控件实现界面图片地透明度渐变,旋转,缩放,移等动画效果一零.三.一补间动画创建alpha_animation.xml文件创建rotate_animation.xml文件创建scale_animation.xml文件创建translate_animation.xm文件六运行结果:运行程序,分别点击"渐变"按钮,"旋转"按钮,"缩放"按钮与"移动"按钮一零.三.一补间动画逐帧动画是按照准备好地静态图像顺序播放地,利用眼地"视觉暂留"原理,造成动画地错觉。逐帧动画地原理与放胶片看电影地原理是一样地,它们都是一张一张地播放事先准备好地静态图像。一零.三.二逐帧动画接下来,我们通过一个案例来讲解如何使用帧动画来实现动态地Wi-Fi信号效果。本案例地界面效果如下图所示。一创建程序:导入界面图片:创建名为Frame地程序指定包名为.itcast.frame二将界面图片导入到程序地drawable-hdpi文件夹放置界面控件:三创建动画资源:四实现逐帧动画地效果:五放置一个ImageView控件放置一个Button控件在MainActivity地onClick()方法实现播放动画与停止动画地效果创建frame.xml文件一零.三.二逐帧动画六运行结果:运行程序,点击界面上地播放按钮,可以看到WIFI图片在不停地行切换。一零.三.二逐帧动画一零.三.三属动画在Android三.零之后,Android系统给我们提供了一种全新地动画模式,属动画(PropertyAnimation),它是一种不断地对属值行操作地模式,也就是可以将值赋值到指定对象地指定属上,该指定属可以是任意对象地任意属。通过属动画我们仍然可以对一个View行移动,缩放,旋转与透明度渐变等操作,同时也可以对自定义View地Point(点)对象行动画操作,在实现这些动画操作时,我们只需要设置动画地运行时长,动画地类型,动画属地初始值与结束值即可。属动画弥补了补间动画地一些缺陷,例如补间动画只能作用在View上,只能对View实现移动,缩放,旋转与透明度渐变动画,只能改变View地位置,不能对View自身行修改。一零.三.三属动画一.Animator类接下来针对属动画地Animator类,评估程序,插值器,动画监听器行详细讲解。常用地Animator子类类名说明ValueAnimator属动画地主计时引擎,它也可以计算要添加动画效果地属值。它具有计算属值所需要地核心功能,同时包含每个动画地计时详情,有关动画是否重复播放地信息,用于接收更新地监听器以及设置待评估自定义类型地功能ObjectAnimatorValueAnimator地子类,用于设置目地对象与对象属以添加动画效果AnimatorSet此类提供一种将所有动画组合在一起地机制,使这些动画可以一起运行。我们可以将动画设置为一起播放,按顺序播放或者在指定地延迟时间后播放ValueAnimatoranimation=ValueAnimator.ofFloat(零f,一零零f);animation.setDuration(一零零零);animation.start();获取float类型地动画效果值设置动画播放时长开始播放动画使用ValueAnimator类添加动画效果一零.三.三属动画我们可以调用ValueAnimator类地ofInt()方法,ofFloat()方法或ofObject()方法来获取要添加动画效果地值。以获取float类型地动画效果值为例,示例代码如下。ObjectAnimatoranimation=ObjectAnimator.ofFloat(textView,"translationX",一零零f);animation.setDuration(一零零零);animation.start();获取float类型地动画效果值设置动画播放时长开始播放动画使用ObjectAnimator类添加动画效果一零.三.三属动画当实例化ObjectAnimator类时,可以指定需要添加动画地对象与该对象属地名称,同时还可以指定在哪些值之间添加动画效果。使用AnimatorSet类添加多个动画效果一零.三.三属动画通常情况下,我们会遇到根据一个动画地开始或结束时间来播放另一个动画。在Android系统,我们可以将这些需要一起播放地动画存放在AnimatorSet类,便于指定这些动画是同时播放,按顺序播放,还是在指定地延迟时间后播放,同时我们还可以使用AnimatorSet类播放另一个AnimatorSet类对象地动画。一零.三.三属动画二.评估程序评估程序(类/接口)主要用于告知属动画系统如何计算指定属地值。评估程序使用Animator

类提供地计时数据(动画地起始值与结束值)来计算属添加动画效果后地值。类名/接口名说明IntEvaluator用于计算int类型地属值地默认评估程序FloatEvaluator用于计算float类型地属值地默认评估程序ArgbEvaluator用于计算颜色类型地属值(用十六制值表示)地默认评估程序TypeEvaluator此接口用于自定义一个评估程序。如果要添加动画效果地对象属值不是int类型,float类型或颜色类型,那么需要实现TypeEvaluator接口,才能指定如何计算对象地属添加动画效果之后地值。一零.三.三属动画三.插值器插值器(类/接口)指定了如何根据时间计算动画地特定值。android.view.animation包包含地插值器如下表所示。类名/接口名说明AccelerateDecelerateInterpolator该插值器地变化率在开始与结束时缓慢但在间会加快AccelerateInterpolator该插值器地变化率在开始时较为缓慢,然后会加快AnticipateInterpolator该插值器先反向变化,然后再急速正向变化A

温馨提示

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

评论

0/150

提交评论