安卓View.onDraw()总是有一个干净的画布
-
19-09-2019 - |
题
我想绘制的动画。要做到这一点我已经扩展查看并覆盖了的onDraw()方法。我会想到的是,每一次的onDraw()被调用画布会在我离开时的状态,我可以选择清除它,还是吸取了它的部分(这是当我用了一个SurfaceView它是如何工作的),但每个画布回来时已经被清除。有没有一种方法,我不能有它清除?或者,也许保存以前的状态成位图这样我就可以绘制位图,然后绘制了它的顶部?
解决方案
我不知道是否有一种方法或没有。但对于我的自定义视图,我不是重绘一切每次的onDraw()被调用,或绘制成位图,然后绘制位图到画布上(就像你在你的问题的建议)。
下面为i如何做到这一点
class A extends View {
private Canvas canvas;
private Bitmap bitmap;
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
if (bitmap != null) {
bitmap .recycle();
}
canvas= new Canvas();
bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
canvas.setBitmap(bitmap);
}
public void destroy() {
if (bitmap != null) {
bitmap.recycle();
}
}
public void onDraw(Canvas c) {
//draw onto the canvas if needed (maybe only the parts of animation that changed)
canvas.drawRect(0,0,10,10,paint);
//draw the bitmap to the real canvas c
c.drawBitmap(bitmap,
new Rect(0,0,bitmap.getWidth(),bitmap.getHeight()),
new Rect(0,0,bitmap.getWidth(),bitmap.getHeight()), null);
}
}
不隶属于 StackOverflow