- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第十章绘图
;10.12D绘图;10.1.1获取Canvas对象
要在Android系统下绘制图形,需要四个基本组件,分别为:
Bitmap:相当于画布,用于管理像素。
Canvas:相当于在在Bitmap上绘图的画家,用于管理绘制过程,提供绘图方法。
Drawable绘制要素:Drawable绘制要素包括形状、路径、文本,图像等,用于将Canvas绘制的图像显示给用户。
Paint:相当于绘图用到画笔,可以设置画笔的颜色、类型等。
若在自定义的View组件上绘制图像,只需重写onDraw()方法即可。;10.1.2使用自定义View绘图
实例MyViewCanvasDemo自定义了一个名为MyView的View类,并在其onDraw()方法中绘制了简单的图像,运行效果如图10.1所示。
图10.1简单View绘图
;10.1.3使用Bitmap绘图
可以通过新建Bitmap对象,并在其上使用Canvas进行绘图的方式创建图像。实例BitmapDrawDemo演示了Canvas使用Bitmap对象绘图的过程。该实例的绘制内容与10.1.2节实例的绘制内容完全相同,只不过不是直接绘制在View上,而是绘制在一个Bitmap对象上,绘制完成后,将Bitmap图像显示到视图上,其运行效果如图10.2所示。
图10.2Bitmap对象的绘图效果
;10.1.4使用SurfaceView绘制静态图像
使用SurfaceView绘图,需要为SurfaceView对象添加SurfaceHoloder.Callback接口,并在该接口的surfaceCreated()方法中通过lockCanvas()方法获取Canvas对象,以此保证当获取Canvas时,SurfaceView对象可用。当绘图工作完成后,通过SurfaceHoloder.unlockCanvas-AndPost()方法将绘图显示出来,并释放Canvas对象。
实例SurfaceViewDrawDemo演示了使用SurfaceView组件绘制静态图的过程,其绘制内容与10.1.2节绘制内容完全相同。通过该实例,读者可以清楚地认识到使用SurfaceView绘图与使用View绘图的不同之处,该实例运行效果如图10.3所示。
图10.3SurfaceView绘图效果
;10.1.5使用SurfaceView绘制动态图像
实例SurfaceViewDrawDemo绘制的是一幅静态图像,而使用SurfaceView绘图的优点在于绘制动态图像。绘制静态图像的过程应该在一个单独的线程中完成,而不应该在主线程中进行。实例SurfaceViewDynDrawDemo演示了使用SurfaceView组件绘制动态图像的过程。该实例修改自AndroidSDK提供的实例,绘制的是类似于Windows中的变幻线屏保的效果,运行效果如图10.4所示。
图10.4实例SurfaceViewDynDrawDemo运行效果
;10.2Drawable
;10.2.2从XML文件中创建Drawable对象
10.2.3使用构造方法创建Drawable对象
以ShapeDrawable为例,ShapeDrawable是Drawable的子类,ShapeDrawable对象适合于动态绘制二维图形。;10.33D绘图
;管理Surface,Surface是一块内存,可以被加载到View视图中。
管理一个EGL显示,能够使用OpenGL把内容渲染到surface上。
接受用户自定义渲染器用于实际渲染。
使渲染器在单独的线程总运行,和更新UI的线程相分离。
支持按需渲染(on-demandrendering)和连续渲染(continuousrendering)。
提供一些可选工具,如OpenGL调用的跟踪调试和错误检查等。
(2)GLSurfaceView.Renderer接口
GLSurfaceView.Renderer接口定义了使用OpenGL绘图时所需的方法。该接口通过GLSurfaceView.setRenderer()与GLSurfaceView关联在一起。
该接口实现以下三个方法:
onSurfaceCreated():当创建GLSurfaceView对象后该方法被系统调用一次。通常在该方法中设置OpenGL环境的相关参数,初始化OpenGL图形对象等。
onDrawFrame():GLSurfaceView对象每一次重绘时系统都会调用该方法。该方法应该执行具体的绘图工作。
onSurfaceChanged():当GLSurfaceView对象的几何外形改变时,包括GLSurfaceView的尺寸发生改
您可能关注的文档
- 质量控制培训部门概述1作者职责创建命名约定跟踪更改ument quality control材料.pptx
- 2012 pearson education inc本材料受现行法保护物理答案过程mastering physics myounism c03.pdf
- 介绍林级数高数chap 9.pdf
- 急思广例讲课蛇咬伤治疗.pptx
- zte crm b2clocal b2b solution-executive summary v0解决方案执行摘要.pptx
- 章当代工作场所由tui mckeown准备莫学习目标chscherm foundations2e.pptx
- 课件教程分析top pre dft vnet-cdsmgruews03 iic.pdf
- 购物闭眼今合宝典舞台.pptx
- 内容教程讲稿horngren imasm.pdf
- 国外购房合同范本.docx
文档评论(0)