android_graphic_:_apk_and_skiaopengles

android_graphic_:_apk_and_skiaopengles

ID:11105067

大小:45.50 KB

页数:0页

时间:2018-07-10

android_graphic_:_apk_and_skiaopengles_第页
预览图正在加载中,预计需要20秒,请耐心等待
资源描述:

《android_graphic_:_apk_and_skiaopengles》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Android画图简介Androidapk里面的画图分为2D和3D两种:2D是由Skia来实现的,也就是我们在框架图上看到的SGL,SGL也会调用部分opengl的内容来实现简单的3D效果;3D部分是由OpenGL

2、ES实现的,OpenGL

3、ES是Opengl的嵌入式版本,我们先了解一下Androidapk的几种画图方式,然后再来来看一看这一整套的图形体系是怎么建立的。首先画图都是针对提供给应用程序的一块内存填充数据,没去研究过一个Activity是否就对应着底层的一个surface,但是应该都是对这块su

4、rface内存进行操作。因此说穿了就是我们要么调用2D的API画图,要么调用3D的API画图,然后将画下来的图保存在这个内存中,最后这个内存里面的内容会被Opengl渲染以后变为可以在屏幕上的像素信息。一、Apk应用主要关心的还是这些API的使用,在Androidapk里面画图有2种方式[2D]:1、SimpleGraphicsinView就是直接使用Android已经实现的一些画图操作,比如说images,shapes,colors,pre-definedanimation等等,这些简单的画图操作实际上是

5、由skia来提供的2D图形操作。使用这些预定义好的操作,我们可以实现诸如贴一张背景图啊,画出简单地形状阿,实现一些简单的动画之类的操作。这里的简单可以这么理解,就是我们在这里没有一笔一画地构造出一个图形出来,我们只是把我们的Graphic资源放入View体系中,由系统来将这些Graphic画出来。举个例子:我们现在在Activity里面绑定一个ImageView,我们可以设置这个ImageView的内容是我们的picture,然后我们可以让这个picture整体颜色上来点蓝色调,然后我们还可以为这个Imag

6、eView加入一个预定义动画,这样当系统要显示这个View的时候就会显示我们的picture,并且会有动画,并带有一个蓝色调,我们并没有自己去定义画图操作,而是将这些内容放入View中,由系统来将这些内容画出来。这种方式只能画静态或者极为简单的2D图画,对于实时性很强的动画,高品质的游戏都是没法实现的。2、Canvas首先我们要明白这个Canvas是一个2D的概念,是在Skia中定义的。也就是说在这个方式下还是说的画2D图形。我们可以把这个Canvas理解成系统提供给我们的一块内存区域(但实际上它只是一套画

7、图的API,真正的内存是下面的Bitmap),而且它还提供了一整套对这个内存区域进行操作的方法,所有的这些操作都是画图API。也就是说在这种方式下我们已经能一笔一划或者使用Graphic来画我们所需要的东西了,要画什么要显示什么都由我们自己控制。这种方式根据环境还分为两种:一种就是使用普通View的canvas画图,还有一种就是使用专门的SurfaceView的canvas来画图。两种的主要是区别就是可以在SurfaceView中定义一个专门的线程来完成画图工作,应用程序不需要等待View的刷图,提高性能。

8、前面一种适合处理量比较小,帧率比较小的动画,比如说象棋游戏之类的;而后一种主要用在游戏,高品质动画方面的画图。下面是这两种方式的典型sequence:2.1、Viewcanvas(1)定义一个自己的View:classyour_viewextendsView{};(2)重载View的onDraw方法:protectedvoidonDraw(Canvascanvas){};(3)在onDraw方法中定义你自己的画图操作;ps:可以定义自己的Btimap:Bitmapb=Bitmap.createBitmap(

9、100,100,Bitmap.Config.ARGB_8888);Canvasc=newCanvas(b);但是必须将这个Bitmap放入View的canvas中,画的图才能显示出来:publicvoiddrawBitmap(Bitmapbitmap,Matrixmatrix,Paintpaint);invalidate()这个函数被调用后,系统会在不久的将来重新调用onDraw()函数,这个时间很短但并不是可预知的,我曾经在onDraw()中写了一个if语句,利用validate让系统死循环调用onDra

10、w刷两张图,几乎上这两张图是刷在一起的。2.2、SurfaceViewCanvas(1)定义一个自己的SurfaceView:classyour_surfaceviewextendsSurfaceViewimplementsSurfaceHolder.Callback(){};(2)实现SurfaceHolder.Callback的3个方法surfaceCreated()surfaceChanged()surfa

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
相关文章
更多
相关标签