カスタムビューの背景画像を変更しようとしていますが、成功しています。画像は変更されますが、問題は、古い画像の痕跡がまだ表示されていることです。新しい画像を描画する前にキャンバスをクリアしようとすると、機能していないように見えます。画像を保存するためのビットマップを作成します。画像を変更するときは、新しい画像を描画する前に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);
}
}