《图像与图形处》PPT课件

上传人:wan****21 文档编号:244723480 上传时间:2024-10-05 格式:PPT 页数:32 大小:1.64MB
返回 下载 相关 举报
《图像与图形处》PPT课件_第1页
第1页 / 共32页
《图像与图形处》PPT课件_第2页
第2页 / 共32页
《图像与图形处》PPT课件_第3页
第3页 / 共32页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,6,章 图像与图形处理,网络资源:,QQ,号:,1281147324,QQ,群:,490420731,(,Android,编程入门),本章知识结构图,逐帧动画,简单图片,作为一款注重用户体验的应用程序,当然离不开图形、图像的支持。在,Android,中对图形、图像提供了多种支持,一般使用,Bitmap,和,BitmapFactory,方法来,封装和管理位图,,通过,Animation,和,AnimationDrawable,类来,保存和控制逐帧动画,,使用,Canvas,和,Path,两个类,绘制各种各样的图形,,其中,,Canvas,可以,绘制一些常见的规则图形,,而,Path,则用于绘制一些,不规则、自定义的图形,。,静态图片即图片内容不发生变化的图片,,通常用于,显示,、,增添界面美观,,例如,图标,、,背景,等。对于这种类型的图片通常由一些图片控件进行处理,如,ImageView,等。,动态图片即内容、大小、位置等会随着时间而变化的图片,,一般采用,不断重新绘制的方式来处理,,每隔多少毫秒绘制一次,给人的感觉就是连续变化的。,2D,绘图接口结构,图片不仅可以使用,ImageView,等图片控件显示,也可以作为,Button,、,TextView,等控件的背景。从广义的角度来看,,Android,应用中图片,不仅包括*,.png,(,首选,)、,*,.jpg,、,*,.gif,(,不建议,),等格式的位图,,也包括,使用,XML,资源文件定义的各种,Drawable,对象,。,逐帧动画是一种常见的动画形式,其原理是,利用人的视觉的滞后性,,在时间轴的,每帧上绘制不同的内容,,然后,在足够短的时间内进行播放,,给人的感觉就如同连续的动画。,由于逐帧动画的帧序列内容不一样,这不但给,制作,增加了,负担,而且,最终输出的文件量也很大,,但它的优势也很明显:逐帧动画,适合于表演细腻的动作,。例如:人物走路、说话,动物奔跑等,6.1,简单图片和逐帧动画,逐帧动画,简单图片,6.1,简单图片和逐帧动画,6.1,简单图片和逐帧动画,程序结构,在,Android,中操作图片是通过,Drawable,类来完成的,,Drawable,类有很多子类,如,BitmapDrawable,类用于操作位图,,AnimationDrawable,类用于操作逐帧动画,,ShapeDrawable,类用于操作形状。,Android,不允许图片资源的文件名中出现大写字母,且不能以数字开头,。,需要指出的是,,,只是一个,int,类型的常量,代表该,Drawable,对象的,ID,,如果在,Java,程序中需要获得实际的,Drawable,对象,则可以调用,getResources(),方法再调用,Resources,的,getDrawable,(,int ID,),方法来获取。,1.Drawable,对象,6.1.1,简单图片,2.Bitmap,和,BitmapFactory,Bitmap,用于表示一张,位图,,,BitmapDrawable,用于,封装一个,Bitmap,对象,。,如果想将,Bitmap,对象包装成,BitmapDrawable,对象,可以调用,BitmapDrawable,的构造方法。,BitmapDrawable bd=new BitmapDrawable(Bitmap bitmap);,如果需要获取,BitmapDrawable,包装的,Bitmap,对象,可以调用,BitmapDrawable,的,getBitmap(),方法。,Bitmap bitmap=bd.getBitmap();,6.1.1,简单图片,Bitmap,类常用方法,方法,描述,createBitmap,(Bitmap source,int x,int y,int width,int height),从原位图,source,的指定坐标点,(x,y),开始,截取宽为,width,,长为,height,的部分,创建一个新的,Bitmap,对象,createBitmap(int width,int height,Bitmap.Config config),创建一个宽为,width,,长为,height,的新位图,getHeight(),获取位图的高度,getWidth(),获取位图的宽度,isRecycle(),返回该,Bitmap,对象是否已被回收,recycle(),强制一个,Bitmap,对象立即回收自己,6.1.1,简单图片,BitmapFactory,是一个工具类,该类所有的方法都是,静态方法,,这些方法可以,从不同的数据源来解析、创建,Bitmap,对象,,如资源,ID,、路径、文件和数据流等方式。,方法,描述,decodeByteArray(byte data,int offset,int length),从指定的,data,字节数组的,offset,位置,将长度为,length,的字节数据解析成,Bitmap,对象,decodeFile(String pathName),从,pathName,指定的文件中解析,创建一个,Bitmap,对象,decodeResource(Resources res,int ID),从指定的资源,ID,中解析创建,Bitmap,对象,decodeStream(InputStream is),从指定的输入流解析,创建一个,Bitmap,对象,6.1.1,简单图片,BitmapFactory,类常用方法,3.,实现示例,6.1.1,简单图片,1,设置图片的缩放方式,6,设置两个ImageView的上下间距,6.1.1,简单图片,1,final ImageView bitmap1=(ImageView)findViewById(R.id.bitmap1);,获取ImageView对象,2,final ImageView bitmap2=(ImageView)findViewById(R.id.bitmap2);,3,bitmap1.setImageBitmap(BitmapFactory.decodeResource(getResources(),R.drawable.grass);,获取草地背景的位图,4,bitmap1.setOnTouchListener(new OnTouchListener(),设置触摸监听器,5,public boolean onTouch(View v,MotionEvent event),6,BitmapDrawable bitmapDrawable=(BitmapDrawable)bitmap1.getDrawable();,7,Bitmap bitmap=bitmapDrawable.getBitmap();,8,float xchange=bitmap.getWidth()/(float)bitmap1.getWidth();,获取原图的缩放量,9,float ychange=bitmap.getHeight()/(float)bitmap1.getHeight();,10,int x=(int)(event.getX()*xchange);,获取触摸的坐标对应原图上的位置,11,int y=(int)(event.getY()*ychange);,12,if(x+50bitmap.getWidth()x=bitmap.getWidth()-50;,对越界情况的处理,13,if(x-50bitmap.getHeight()y=bitmap.getHeight()-50;,15,if(y-500)y=50;,16,bitmap2.setImageBitmap(Bitmap.createBitmap(bitmap,x-50,y-50,100,100);,以点击的位置为中心查看原图的局部细节,17,bitmap2.setVisibility(View.VISIBLE);,18,return false;,19,20,);,1.,创建逐帧动画,创建逐帧动画的一般方法:,先在程序中,存放逐帧动画的素材,,再在,res,文件夹下创建一个,anim,文件夹,,再在该文件夹下,创建一个,XML,文档,,在,元素中添加,元素来定义动画的全部帧。,注意:,Android,也支持在代码中创建逐帧动画,,,调用,AnimationDrawable,的,addFrame,(Drawable frame,int duration),方法即可,类似于使用,XML,方法创建时的,。,6.1.2,逐帧动画,其中,:,(,1,)android:oneshot,属性定义动画是否循环播放,。true,-只播一次,不循环播放;false-循环播放。,(,2,),元素定义每一张图片的内容,和播放持续时间。,android:drawable,指定内容,,android:duration,指定时间。,(,3,)元素出现的顺序,指定图片播放的顺序。,Android也支持在代码中创建逐帧动画,:,调用AnimationDrawable的addFrame(Drawable frame,int duration)方法即可,类似于使用XML方法创建时的。,6.1.2,逐帧动画,2.,实现示例,6.1.2,逐帧动画,程序界面布局中定义了三个组件:,两个,Button,和一个,ImageView,,两个,Button,用于控制逐帧动画的开始和停止,,ImageView,用于显示背景和逐帧动画,。,2.,实现示例,6.1.2,逐帧动画,1,6,11,16,17,逐帧动画为马的奔跑,布局文件:,activity_main.xml,2.,实现示例,6.1.2,逐帧动画,1,final Button start=(Button)findViewById(R.id.start);,2,final Button stop=(Button)findViewById(R.id.stop);,3,final ImageView animImg=(ImageView)findViewById(R.id.animImg);,4,final AnimationDrawable,anim=(AnimationDrawable)animImg.getDrawable();,获取逐帧动画的,AnimationDrawable对象,5,start.setOnClickListener(new OnClickListener(),为“动画开始”按钮添加单击事件处理,6,public void onClick(View v),7,anim.start();,开始动画,8,9,);,10,stop.setOnClickListener(new OnClickListener(),为“动画停止”按钮添加单击事件处理,11,public void onClick(View v),12,anim.stop();,停止动画,13,14,);,两个按钮代码所在文件:,/Bitmap_AnimationTest/src/com/example/bitmap_animationtest/MainActivity.java,2.,实现示例,6.1.2,逐帧动画,该程序在使用,android:src=anim/horse,引用逐帧动画,如果无需草地背景,也可以使用,android:background=anim/horse“,将逐帧动画作为背景显示,,在代码中将“,final AnimationDrawable anim=(AnimationDrawable)img.getDrawable();,”,改为“,final AnimationDrawable anim=(AnimationDrawable)img.g
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!