Android 图形绘制(skia)

时间:2023-02-06 23:43:14
Skia是什么?打个比方来说吧,现在让你来画一幅画,比如我们的国画山水画。画一幅画需要哪些工具呢?从常识上来说,我们需要一张纸,比如白纸,或者带有某些背景图的纸张;需要毛笔,不同型号的毛笔;墨汁;颜料等等。然后我们规定在纸张的哪个区域画图,用什么样的毛笔,用什么样的颜色,画什么样的图形,是点、线、面?还是花草等。
Skia是什么?Skia就是类似上面画图所有需要的一系列设备、工具等。要在Android里画图或者渲染图像,都需要Skia提供的API接口,或者是间接提供。
你可能会问,我在写应用程序里,怎么没看到或者用到Skia这样的函数呢?这个问题并不奇怪,因为你不需要直接控制图形绘制,没有做绘图类的应用,所以你没有用到这方面函数。但是,你所有Activity或者View或者其他控件的显示,在底层都是通过Skia提供的函数进行显示的。常见的Canvas类,假如你跟踪一下代码,会发现,Canvas是通过Native方式,调用底层的SkCanvas的。

Skiaandroid源码里的目录位置:
·
头 文件(也可以说是internal API, 因为google没有在NDK里面提供他)位置:android/external/skia/include。其中还包含以下几个子目 录:animator, core, effects, images, views..., 最重要的就是core目录了,我们在这里的分析也主要针对core目录里面的API。
·
源文件位于: android/external/skia/src目录,子目录结构和头文件目录相同。
·
封 装层:android对Skia引擎进行了封装,以便让java代码方便的调用,对skia封装的代码存在于android/framework /base/core/jni以及android/framework/base/core/jni/android/graphics目录下面。主要是 对Canvas, Bitmap, Graphics, Picture等等的封装,以及和libui库的结合使用。