在 view 里我使用一个 自定义 canvas 画图。先在 canvas 里画出背景, 再画出几个图片。
背景是一个张图片。当触发 onTouchEvent 后,图片移动 canvas 重画背景画出来会有图片移动的痕迹。
如果背景指定了一个颜色就不会有这样的问题。 怎么解决?
canvas = new Canvas(bgbitmap);
绘制背景:
canvas.drawColor(selectedColor);
如果用 drawBitmap 绘制背景会有问题
// canvas.drawBitmap(bgbitmap, 0, 0, null);
// 绘制 图片
for (int i = fbmpCount - 1; i >= 0; i--) {
FreeBitmap fb = findFreeBmpByPriority(i);
if (fb != null)
this.canvas.drawBitmap(fb.getBmp(), fb.getXpoint(), fb.getYpoint(),
null);
}
this.invalidate();
// onDraw 方法。
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawBitmap(bgbitmap, 0, 0, null);
}
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.view.View;
public class MyView extends View{
private Bitmap background;
public MyView(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(0xFFFFFFFF);
if(null==background){
background=Bitmap.createBitmap(bigBitmap.getWidth(), bigBitmap.getHeight(), Config.ARGB_8888);
Canvas c=new Canvas(background);
c.drawBitmap(bigBitmap, 0, 0, null);
c.save(Canvas.ALL_SAVE_FLAG);
}
canvas.drawBitmap(background, 0, 0, null);
canvas.drawBitmap(smallBitmap, x, y, null);
}
}
我认为你应该在重新画之前清空一下画布:
Canvas.drawColor(Color.WHITE)
试试可不可以