Clearing-Leinwand mit Canvas.drawColor()

ich versuche, ändern Sie das Hintergrundbild einer benutzerdefinierten Ansicht mit einigem Erfolg. das Bild wird sich ändern, aber das problem ist, dass ich immer noch die Spuren des alten Bildes. wenn ich Versuch, deaktivieren Sie die Leinwand vor dem zeichnen des neuen Bildes, es scheint nicht zu funktionieren. ich erstelle eine bitmap, um das Bild zu speichern. beim ändern der Bild, ich nenne Leinwand.drawColor() vor dem zeichnen des neuen Bildes das alte Bild weiterhin besteht. ich habe versucht drawColor(0), drawColor(Color.SCHWARZ), c.drawColor(0, PorterDuff.- Modus.KLAR), und keine der oben genannten arbeiten. als solche hatte ich in diesem post für die überprüfung von erfahreneren Köpfe, als mir.

ist der aktuelle 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);
    }
}

InformationsquelleAutor Prmths | 2011-01-10

Schreibe einen Kommentar