概述
【概念】
Skia 是 Google 一个底层的图形、图像、动画、 SVG 、文本等多方面的图形库,是 Android 中图形系统的引擎。
Android里画图或者渲染图像,都需要Skia提供的API接口,或者是间接提供。
所有Activity或者View或者其他控件的显示,在底层都是通过Skia提供的函数进行显示的。
Canvas是通过Native方式,调用底层的SkCanvas的。
【源码相关目录】
1.头 文件 --- android/external/skia/include
2.源文件 --- android/external/skia/src
3.封 装层 --- android/framework /base/core/jni && android/framework/base/core/jni/android/graphics
(对Skia引擎进行了封装,以便让java代码方便的调用.主要是 对Canvas, Bitmap, Graphics, Picture等等的封装,
以及和libui库的结合使用。)
【代码角度分析】
skia 有大概 80,000 行代码,基于 C++ 开发。
【应用层到底层的调用关系】
【涉及到的3个库】
libcorecg.so 包含/skia/src/core的部分内容,比如其中的Region,Rect是在SurfaceFlinger里面计算可是区域的操作基本单位;
libsgl.so 包含/skia/src/core|effects|images|ports|utils的部分和全部内容,
这个实现了skia大部分的图形效果,以及图形格式的编解码;
libskiagl.so 包含/skia/src/gl里面的内容,主要用来调用opengl实现部分效果。
【运用小例子 -- 专业图像处理软件】
因为Android平台对应用程序的内存限制,并且java的处理效率低下;所以有这么一个方法:NDK+Skia
采用这种方法,绘制屏幕,将会少消耗一半的内存,有没有很开心的感觉!
【缺点】
Skia 本身不是很稳定,所以Skia并没有被包含在NDK的发布包中
【使用Skia引擎时的注意事项】
a 基本图形绘制 ( 如 drawARGB,drawLine 函数 )
b 图像文件绘制( drawBitmap 函数)
c 文本绘制( drawText 函数)
Skia 的图像编解码部分:
external/include/image/SKImageDecoder.h // 把图像文件或者流解码到 skia 的内部内存SKBitmap 中 ;
external/include/image/SKImageEncoder.h // 把 skia 内部内存 SKBitmap 编码成文件或流的形式;
这些接口需要具体的类实现,主要代码在 src/image 文件中
JNI 接口:
Skia 底层库到 Java 上层的支持
代码路径为:frameworks/base/core/jni/android/graphic/ 主要为 Canvas.cpp 文件。
Android 的图形包( graphics ):
它通过调用图形系统的 JNI ,在 Android 的 Java 框架中和 Java 应用程序中, 进行2D 绘制的功能
(基本图形、图片文件,文字)也是通过调用它来实现的。
代码路径为:frameworks/base/graphics/java/android/graphics/
Canvas.cpp 文件实现了 Android 图形系统中最重要的一个类 android.graphic.canvas
【代码Demo集合】
http://www.360doc.com/content/13/0401/16/7891085_275323215.shtml
http://blog.csdn.net/youngkingyj/article/details/16880279
最后
以上就是专一花卷为你收集整理的安卓之Skia的全部内容,希望文章能够帮你解决安卓之Skia所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复