【发布时间】:2011-01-10 19:40:02
【问题描述】:
我正在尝试成功更改自定义视图的背景图像。图像会改变,但问题是我仍然看到旧图像的痕迹。当我尝试在绘制新图像之前清除画布时,它似乎不起作用。我创建一个位图来存储图像。更改图像时,我在绘制新图像之前调用 Canvas.drawColor() 但旧图像仍然存在。我尝试过 drawColor(0)、drawColor(Color.BLACK)、c.drawColor(0, PorterDuff.Mode.CLEAR),但上述方法均无效。因此,我不得不发布这篇文章以供比我更有经验的人评论。
实际代码如下:
private int bgnd;
private boolean switching;
public void setBgnd(int incoming){
switching = true;
switch (incoming){
case R.drawable.image1:
bgnd = incoming;
this.invalidate();
break;
case R.drawable.image2:
bgnd = incoming;
this.invalidate();
break;
}
}
protected void onDraw(Canvas c){
if(switching == true){
Bitmap b = BitmapFactory.decodeResource(getResources(), bgnd);
c.drawColor(0, PorterDuff.Mode.CLEAR);
c.drawBitmap(b, 0, 0, null);
switching = false;
}else{
Bitmap b = BitmapFactory.decodeResource(getResources(), bgnd);
c.drawBitmap(b, 0, 0, null);
}
}
【问题讨论】: