![第12章 图形图像_第1页](http://file4.renrendoc.com/view/9b1caa4239c8273893b3ba71ab20429e/9b1caa4239c8273893b3ba71ab20429e1.gif)
![第12章 图形图像_第2页](http://file4.renrendoc.com/view/9b1caa4239c8273893b3ba71ab20429e/9b1caa4239c8273893b3ba71ab20429e2.gif)
![第12章 图形图像_第3页](http://file4.renrendoc.com/view/9b1caa4239c8273893b3ba71ab20429e/9b1caa4239c8273893b3ba71ab20429e3.gif)
![第12章 图形图像_第4页](http://file4.renrendoc.com/view/9b1caa4239c8273893b3ba71ab20429e/9b1caa4239c8273893b3ba71ab20429e4.gif)
![第12章 图形图像_第5页](http://file4.renrendoc.com/view/9b1caa4239c8273893b3ba71ab20429e/9b1caa4239c8273893b3ba71ab20429e5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十二章图形图像1.访问图片2.Tween动画3.Frame动画4.图形的绘制5.通过Matrix实现动画6.Shader类实现图形特效7.图像像素的操作1.访问图片1)显示drawable中的图像参考:Chapter12_Graphic_011.访问图片1)显示drawable中的图像A.在res/drawable/目录中添加需要的图片,如test.jpg,B.在布局文件中,添加一个ImageView<ImageViewandroid:id="@+id/ImageView01"android:layout_width="wrap_content"android:layout_height="wrap_content"></ImageView>1.访问图片1)显示drawable中的图像C.显示一个图片两种方法:通过布局文件中设置:android:src="@drawable/test"通java程序中调用:myImageView.setImageResource(R.drawable.test);1.访问图片2)显示sd卡上的图片参考:Chapter12_Graphic_021.访问图片2)显示sd卡上的图片A.在布局文件中,添加一个ImageView注意:删除这条语句:android:src="@drawable/test"B.注意:设置在sd卡上的图片的绝对路径,并且保证存在对应的图片Stringpath="/sdcard/zs.jpg";如没有这个图片,可选择其他图片导入sdcard1.访问图片2)显示sd卡上的图片C.通过fileexplore的方式导入使用android1.5的AVD使用android1.6或2.01的avd有时会有问题1.访问图片2)显示sd卡上的图片D.需要通过指令的方式导入运行――cmd,进入android的tools目录:G:\beifen\Software\android\android-sdk-windows\toolsadbpush文件的绝对路径/sdcard/1.访问图片2)显示sd卡上的图片E.java程序实现显示图片Stringpath="/sdcard/zs.jpg";Bitmapbm=BitmapFactory.decodeFile(path);myImageView=(ImageView)findViewById(R.id.ImageView01);myImageView.setImageBitmap(bm);不使用语句:setWallpaper(bm);1.访问图片2)显示sd卡上的图片F.setWallpaper(bm);含义:设置home界面的墙纸2.Tween动画Android中的动画分为:Tween动画和Frame动画完成一个图片的简单动画,包括:尺寸、透明度、旋转、位置4种变化实现方式分两种:1)直接通过编程(硬编码)的方式2)通过xml配置文件中定义,然后再调用的方式2.Tween动画1)直接通过编程(硬编码)的方式参考:Chapter12_Graphic_Animation在每个按钮的分别实现不同的动画效果,通过编程来实现2.Tween动画1)直接通过编程(硬编码)的方式A.xml布局文件中包括一个ImageView和4个button<ImageViewandroid:id="@+id/ImageView01"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/girl"></ImageView>2.Tween动画1)直接通过编程(硬编码)的方式B.获取各组件的控制对像girlImage=(ImageView)findViewById(R.id.ImageView01);b1=(Button)findViewById(R.id.Button01);b2=(Button)findViewById(R.id.Button02);b3=(Button)findViewById(R.id.Button03);b4=(Button)findViewById(R.id.Button04);2.Tween动画1)直接通过编程(硬编码)的方式动画的实现:通过Animation对像,startAnimation(scaleAnimation)实现C.尺寸变化实现的动画//创建Sacle(尺寸)变化动画AnimationscaleAnimation=newScaleAnimation(0f,1f,0f,1f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);//设置动画持续时间scaleAnimation.setDuration(3000);//开始动画girlImage.startAnimation(scaleAnimation);2.Tween动画1)直接通过编程(硬编码)的方式D.对比度变化实现的动画//创建Alpha(渐变)动画AnimationalphaAnimation=newAlphaAnimation(0.1f,1.0f);//设置动画持续时间alphaAnimation.setDuration(3000);//开始动画girlImage.startAnimation(alphaAnimation);2.Tween动画1)直接通过编程(硬编码)的方式E.位置变化实现的动画//创建translate(位置变化)动画AnimationtranslateAnimation=newTranslateAnimation(10,100,10,100);//设置动画持续时间translateAnimation.setDuration(3000);//开始动画girlImage.startAnimation(translateAnimation);2.Tween动画1)直接通过编程(硬编码)的方式F.通过旋转实现的动画//创建rotate(旋转)动画AnimationrotateAnimation=newRotateAnimation(0f,+360f, Animation.RELATIVE_TO_SELF,0.5f, Animation.RELATIVE_TO_SELF,0.5f);//设置动画持续时间rotateAnimation.setDuration(3000);//开始动画girlImage.startAnimation(rotateAnimation);2.Tween动画1)直接通过编程(硬编码)的方式H.程序的修改A)对某一种动画,修改持续的时间rotateAnimation.setDuration(6000);效果:旋转明显变慢B)改变位置变化的参数AnimationtranslateAnimation=newTranslateAnimation(10,100,10,200);效果:移动的目标位置发生变化2.Tween动画2)通过xml配置文件中定义,然后再调用的方式参考:Chapter12_Graphic_Animation1A.在res/amin/目录中,定义每种动画的xml文件如:my_scale.xml,定义scale动画的参数<scale android:fromXScale="0.0" android:toXScale="1.0" android:fromYScale="0.0" android:toYScale="1.0" android:pivotX="50%"
android:pivotY="50%" android:duration="5000">2.Tween动画2)通过xml配置文件中定义,然后再调用的方式B.在每个按钮的响应函数中,通过xml文件完成动画AnimationscaleAnimation=AnimationUtils.loadAnimation(MainActivity.this,R.anim.my_scale);girlImage.startAnimation(scaleAnimation);3.Frame动画将多幅图片依次连续播放,实现动画效果参考:Chapter12_Graphic_Animation21)将各幅图片复制到res/drawable/目录中3.Frame动画2)在res/amin/目录中建立dance.xml,设置各帧的图片<itemandroid:drawable="@drawable/p01"android:duration="500"/><itemandroid:drawable="@drawable/p02"android:duration="500"/><itemandroid:drawable="@drawable/p03"android:duration="500"/><itemandroid:drawable="@drawable/p04"android:duration="500"/><itemandroid:drawable="@drawable/p05"android:duration="500"/><itemandroid:drawable="@drawable/p06"android:duration="500"/>3.Frame动画3)在main.xml中,设置ImageView的背景为dance.xmlandroid:background="@anim/dance"4)在activity中,获得背景色,并转换为AnimationDrawable对象声明AnimationDrawableprivateAnimationDrawabledanceAnimation;danceAnimation=(AnimationDrawable) myImage.getBackground();3.Frame动画5)播放动画danceAnimation.start();6)停止动画danceAnimation.stop();7)修改程序修改dance.xml中的duration="1500"效果:动画明显变慢4.图形的绘制参考:Chapter12_Graphic_03通过指令,实现:各种颜色、各种形状、各种样式的图形的绘制4.图形的绘制下面先描述Canvas和Paint1)CanvasCanvas:理解为画布,主要实现了屏幕的绘制过程,其中包含了很多实用的方法,比如绘制一条路径、区域、贴图、画点、画线、渲染文本4.图形的绘制Canvas类常用的方法:A.voiddrawRect(RectFrect,Paintpaint)绘制区域,参数一为RectF一个区域B.voiddrawPath(Pathpath,Paintpaint)绘制一个路径,参数一为Path路径对象C.voiddrawBitmap(Bitmapbitmap,Rectsrc,Rectdst,Paintpaint)参数一就是我们常规的Bitmap对象,参数二是源区域(Android提示这里是bitmap),参数三是目标区域(应该在canvas的位置和大小),参数四是Paint画刷对象4.图形的绘制Canvas类常用的方法:D.voiddrawLine(floatstartX,floatstartY,floatstopX,floatstopY,Paintpaint)画线,参数一起始点的x轴位置,参数二起始点的y轴位置,参数三终点的x轴水平位置,参数四y轴垂直位置,最后一个参数为Paint画刷对象。4.图形的绘制Canvas类常用的方法:E.voiddrawPoint(floatx,floaty,Paintpaint)画点,参数一水平x轴,参数二垂直y轴,第三个参数为Paint对象。F.voiddrawText(Stringtext,floatx,floaty,Paintpaint)渲染文本,参数一是String类型的文本,参数二x轴,参数三y轴,参数四是Paint对象。4.图形的绘制2)Paint如果我们把Canvas当做绘画师来看,那么Paint就是我们绘画的工具,比如画笔、画刷、颜料等等。Paint类常用方法:A.voidsetARGB(inta,intr,intg,intb)设置Paint对象颜色,参数一为alpha透明通道4.图形的绘制2)PaintB.voidsetAlpha(inta)设置alpha不透明度,范围为0~255C.voidsetAntiAlias(booleanaa)//是否抗锯齿D.voidsetColor(intcolor)设置颜色,这里Android内部定义的有Color类包含了一些常见颜色定义4.图形的绘制2)PaintE.voidsetFakeBoldText(booleanfakeBoldText)设置伪粗体文本F.voidsetLinearText(booleanlinearText)设置线性文本G.PathEffectsetPathEffect(PathEffecteffect)设置路径效果4.图形的绘制2)PaintH.RasterizersetRasterizer(Rasterizerrasterizer)设置光栅化I.ShadersetShader(Shadershader)//设置阴影J.voidsetTextAlign(Paint.Alignalign)//设置文本对齐4.图形的绘制2)PaintK.voidsetTextScaleX(floatscaleX)//设置文本缩放倍数,1.0f为原始L.voidsetTextSize(floattextSize)//设置字体大小M.TypefacesetTypeface(Typefacetypeface)//设置字体,Typeface包含了字体的类型,粗细,还有倾斜、颜色等。N.voidsetUnderlineText(booleanunderlineText)//设置下划线4.图形的绘制最终Canvas和Paint在onDraw中直接使用protectedvoidonDraw(Canvascanvas){PaintpaintRed=newPaint();paintRed.setColor(Color.Red);//在坐标11,3上画一个红点
canvas.drawPoint(11,3,paintRed);}4.图形的绘制3)具体实例:参考:Chapter12_Graphic_034.图形的绘制3)具体实例:在OnDraw()函数中实现A.通过canvas设置背景颜色canvas.drawColor(Color.WHITE);B.设置画笔的属性Paintpaint=newPaint();paint.setAntiAlias(true);paint.setColor(Color.GREEN);paint.setStyle(Paint.Style.STROKE);paint.setStrokeWidth(3);4.图形的绘制3)具体实例:通过canvas绘制不同的图形C.第一排绿色的图形canvas.drawCircle(40,40,30,paint);canvas.drawRect(10,90,70,150,paint);canvas.drawRect(10,170,70,200,paint);RectFre=newRectF(10,220,70,250);canvas.drawOval(re,paint);4.图形的绘制3)具体实例:D.通过path对像设置路径,绘制三角形和梯形//绘制三角形Pathpath=newPath();path.moveTo(10,330);path.lineTo(70,330);path.lineTo(40,270);path.close();canvas.drawPath(path,paint);4.图形的绘制3)具体实例:D.通过path对像设置路径,绘制三角形和梯形//绘制梯形Pathpath1=newPath();path1.moveTo(10,410);path1.lineTo(70,410);path1.lineTo(55,350);path1.lineTo(25,350);path1.close();canvas.drawPath(path1,paint);4.图形的绘制3)具体实例:E.以实心方式绘制图形//设置实心Paintpaint.setStyle(Paint.Style.FILL);paint.setColor(Color.RED);//绘制实心图形canvas.drawCircle(120,40,30,paint);canvas.drawRect(90,90,150,150,paint);canvas.drawRect(90,170,150,200,paint);RectFre2=newRectF(90,220,150,250);canvas.drawOval(re2,paint);4.图形的绘制3)具体实例:F.以渲染的方式显示图形//定义渲染shader的paint对像ShadermShader=newLinearGradient(0,0,100,100,newint[]{Color.GREEN,Color.RED,Color.BLUE,Color.YELLOW},null,Shader.TileMode.REPEAT);paint.setShader(mShader);canvas.drawCircle(200,40,30,paint);4.图形的绘制3)具体实例:G.以渲染的方式显示文字paint.setTextSize(24); canvas.drawText(getResources().getString(R.string.str_text1),240,50,paint);第十一章多媒体应用1.音频的播放2.视频的播放3.音频的录制4.摄像头1.音频的播放播放音频和视频,主要采用MediaPlayer类,该类位于android.media包中要播放音频或者视频,首先需要有对应的源文件,源文件主要分3中类型:资源中的文件、系统(sd卡)中的文件、网络上的文件1.音频的播放4)迷你音频播放器参考:Chapter11_Media_MiniPlayer应用:音乐播放、暂停、停止;图标按钮的使用;按钮的控制1.音频的播放4)迷你音频播放器A.图标按钮布局文件中,通过ImageButton实现<ImageButton android:id="@+id/play" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/play" />决定显示的图标2.视频的播放参考:Chapter11_Media_MiniPlayer_video1)准备视频文件在模拟器上运行,首先需要AVD的存储空间中有一个视频文件,需要一个比较小的mp4/3gp文件如复制一个20多兆的MP4,导入的过程总是有问题A.在PC上如何导入视频到sd卡中3.音频的录制参考:Chapter11_Media_MiniRecorder1)在模拟器上,程序运行,可录制音频文件,文件存放路径:path="/sdcard/test1.mp3";但是,录制的文件存在问题,不能播放4.摄像头的程序参考:cameratest
第十二章图形图像1.访问图片2.Tween动画3.Frame动画4.图形的绘制5.通过Matrix实现动画6.Shader类实现图形特效7.图像像素的操作1.访问图片1)显示drawable中的图像参考:Chapter12_Graphic_011.访问图片2)显示sd卡上的图片参考:Chapter12_Graphic_022.Tween动画Android中的动画分为:Tween动画和Frame动画完成一个图片的简单动画,包括:尺寸、透明度、旋转、位置4种变化实现方式分两种:1)直接通过编程(硬编码)的方式2)通过xml配置文件中定义,然后再调用的方式2.Tween动画1)直接通过编程(硬编码)的方式参考:Chapter12_Graphic_Animation在每个按钮的分别实现不同的动画效果,通过编程来实现3.Frame动画将多幅图片依次连续播放,实现动画效果参考:Chapter12_Graphic_Animation21)将各幅图片复制到res/drawable/目录中4.图形的绘制参考:Chapter12_Graphic_03通过指令,实现:各种颜色、各种形状、各种样式的图形的绘制4.图形的绘制下面先描述Canvas和Paint1)CanvasCanvas:理解为画布,主要实现了屏幕的绘制过程,其中包含了很多实用的方法,比如绘制一条路径、区域、贴图、画点、画线、渲染文本4.图形的绘制2)Paint如果我们把Canvas当做绘画师来看,那么Paint就是我们绘画的工具,比如画笔、画刷、颜料等等。Paint类常用方法:A.voidsetARGB(inta,intr,intg,intb)设置Paint对象颜色,参数一为alpha透明通道4.图形的绘制3)具体实例:在OnDraw()函数中实现A.通过canvas设置背景颜色canvas.drawColor(Color.WHITE);B.设置画笔的属性Paintpaint=newPaint();paint.setAntiAlias(true);paint.setColor(Color.GREEN);paint.setStyle(Paint.Style.STROKE);paint.setStrokeWidth(3);4.图形的绘制3)具体实例:通过canvas绘制不同的图形C.第一排绿色的图形canvas.drawCircle(40,40,30,paint);canvas.drawRect(10,90,70,150,paint);canvas.drawRect(10,170,70,200,paint);RectFre=newRectF(10,220,70,250);canvas.drawOval(re,paint);4.图形的绘制3)具体实例:空心实线paint.setStyle(Paint.Style.STROKE);paint.setStrokeWidth(3);//设置实心Paintpaint.setStyle(Paint.Style.FILL);第十二章图形图像第十三章OPENGL第十四章游戏开发第十二章图形图像1.访问图片2.Tween动画3.Frame动画4.图形的绘制5.通过Matrix实现动画6.Shader类实现图形特效7.图像像素的操作5.通过Matrix实现动画参考:Chapter12_Graphic_Matrix主要通过Matrix类实现,通过函数:setRotate()、setScale()、setTranslate()完成旋转、缩放、平移5.通过Matrix实现动画运行效果:通过上下键,对图片进行缩放通过左右键,对图片进行旋转5.通过Matrix实现动画1)获得位图的对象和属性bm=BitmapFactory.decodeResource(this.getResources(),R.drawable.girl);w=bm.getWidth();h=bm.getHeight();5.通过Matrix实现动画2)在OnDraw函数中根据scale和angle创建新的图片,并进行显示matrix.reset();if(!isScale){ //旋转Matrix matrix.setRotate(angle);}else{//缩放Matrixmatrix.setScale(scale,scale);}5.通过Matrix实现动画2)在OnDraw函数中根据scale和angle创建新的图片,并进行显示//根据原始位图和Matrix创建新视图Bitmapbm2=Bitmap.createBitmap(bm,0,0,w,h,matrix,true);//绘制新视图canvas.drawBitmap(bm2,matrix,null);5.通过Matrix实现动画3)根据手机上的方向键操作,对angle和scale进行修改A.通过KeyEvent获取按键类型keyCode==KeyEvent.KEYCODE_DPAD_LEFTB.左右按键控制旋转//向左旋转if(keyCode==KeyEvent.KEYCODE_DPAD_LEFT){ isScale=false; angle++; postInvalidate();}5.通过Matrix实现动画3)根据手机上的方向键操作,对angle和scale进行修改B.左右按键控制旋转//向右旋转if(keyCode==KeyEvent.KEYCODE_DPAD_R
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中物理课件-平面镜成像微
- 《广告法基本培训》课件
- 《超级发廊管理》课件
- 质量基础知识培训课件
- 《资本积累》课件2
- 公共关系练习题练习卷附答案
- 环境监测初级复习试题有答案
- 《DSCDMA信令流程》课件
- 《积极维护人身权》课件
- 《高技术概论》课件
- 2025年上半年中煤科工集团北京华宇工程限公司中层干部公开招聘易考易错模拟试题(共500题)试卷后附参考答案
- 会议室墙面隔音板施工方案
- 特朗普就职演说全文与核心要点
- (完整版)陆河客家请神书
- 2025年教科版新教材科学小学一年级下册教学计划(含进度表)
- 集团专利管理制度内容
- 2025年中国社会科学院世界历史研究所科研人员招聘4人历年高频重点提升(共500题)附带答案详解
- 小散工程施工安全培训
- 《中国地方戏曲简介》课件
- 商会2025年工作计划
- 《安全生产法》2024版
评论
0/150
提交评论