本文将通过分析部分源码,描述 Android 里面的 Canvas 的大致实现。并且会对 Canvas 的性能做一定分析,提供对 Canvas 的使用建议。
GLES20RecordingCanvas 类
这个类是什么?为什么我从没用过?
我们来看看它的代码:
class GLES20RecordingCanvas extends GLES20Canvas {
...
}
class GLES20Canvas extends HardwareCanvas {
...
}
public abstract class HardwareCanvas extends Canvas {
...
}
它是不暴露给开发者的,所以我们也使用不了它。
而由 extends Canvas 可见,它是 Canvas 的一个实现类,所以应当也提供和 Canvas 一样的功能。那么它在哪里被使用了呢?
它是在 Android framework 源码处的,我们可以自定义一个 view,在 debug 时,断点到
protected void onDraw(Canvas canvas) {