Android SurfaceView / Canvas parpadeando después de intentar borrarlo
Así que estoy tratando de borrar el lienzo usando canvas.drawColor (Color.BLACK), pero si solo llamo a esto una vez, la pantalla parpadea y muestra el dibujo anterior que debería haber sido cubierto por el drawColor.
Aquí están los bits importantes de mi código:
// This method is called by a Thread
public void update() {
Canvas canvas = holder.lockCanvas(null);
if (canvas != null) {
onDraw(canvas);
}
holder.unlockCanvasAndPost(canvas);
}
@Override
protected void onDraw(Canvas canvas) {
if (toClear) {
canvas.drawColor(Color.BLACK);
//if this is not set to change back to false, it does not flicker
toClear = false;
}
//Draw some objects that are moving around
}
public void clearScreen() {
// This method is called when the user pressed a button
toClear = true;
}
Después de buscar en Google un poco, escuché sobre el doble almacenamiento en búfer, pero entendí que lockCanvas () y unlockCanvasAndPost () deberían manejar esto por mí. ¿Qué está mal aquí?