Reputation: 7550
I've extended SurfaceView and managed to draw it in an Activity. The Activity should be able to call a method on my SurfaceView that changes some parameter and redraws it. How can that update function be implemented?
This is my class:
public class MySurfaceView extends SurfaceView
implements SurfaceHolder.Callback {
private int circleRadius = 50;
private SurfaceHolder sh;
private final Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
public MySurfaceView(Context context, AttributeSet as) {
super(context,as);
sh = getHolder();
sh.addCallback(this);
paint.setColor(Color.BLUE);
paint.setStyle(Style.FILL);
}
public void surfaceCreated(SurfaceHolder holder) {
Canvas canvas = sh.lockCanvas();
canvas.drawColor(Color.BLACK);
canvas.drawCircle(100, 200, circleRadius, paint);
sh.unlockCanvasAndPost(canvas);
}
public void update( newRadius ) {
circleRadius = newRadius;
// What more?
}
}
What should update
contain to redraw everything? Does this have to do with surfaceChanged
?
Upvotes: 6
Views: 9561
Reputation: 7550
update
function should call invalidate()
or postInvalidate()
in order for the View to redraw.setWillNotDraw(false)
in e.g. surfaceCreated
.Upvotes: 10