Cas*_*eyB 17 android android-ui android-canvas
我想画一个动画.为此,我扩展了View并覆盖了onDraw()方法.我所期待的是每次调用onDraw()时画布都会处于我留下的状态,我可以选择清除它或者只是绘制它的一部分(这是我使用SurfaceView时的工作原理) )但每次画布回来时都已清除.有没有办法让我无法清除它?或者可能将以前的状态保存到位图中,这样我就可以绘制该位图然后在其上方绘制?
dwe*_*ebo 28
我不确定是否有办法.但是对于我的自定义视图,每次调用onDraw()时都要重绘所有内容,或者绘制到位图然后将位图绘制到画布上(就像你在问题中建议的那样).
我是这样做的
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);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38907 次 |
| 最近记录: |