Ich versuche, das Hintergrundbild einer benutzerdefinierten Ansicht mit einigem Erfolg zu ändern. Das Bild ändert sich, aber das Problem ist, dass ich immer noch Spuren des alten Bildes sehe. Wenn ich versuche, die Leinwand zu leeren, bevor ich das neue Bild zeichne, scheint es nicht zu funktionieren. Ich erstelle ein Bitmap, um das Bild zu speichern. Wenn ich das Bild ändere, rufe ich Canvas.drawColor() auf, bevor ich das neue Bild zeichne, aber das alte Bild bleibt erhalten. Ich habe drawColor (0), drawColor (Color.BLACK), c.drawColor (0, PorterDuff.Mode.CLEAR) versucht, und keine der oben genannten Funktionen. als solche musste ich dies für die Überprüfung von erfahreneren Köpfen post als meine.Löschen von Canvas mit Canvas.drawColor()
der eigentliche Code ist wie folgt:
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);
}
}
Ich denke, dass ich mehr als 2 Tage gebraucht hätte, um das herauszufinden, im Gegensatz zu den 2 Minuten, die ich brauchte, um hierher zu kommen. Thx strangeInAStrangerLand + longdooooo –