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
?
Provides a dedicated drawing surface embedded inside of a view hierarchy. You can control the format of this surface and, if you like, its size; the SurfaceView takes care of placing the surface at the correct location on the screen.
An implementation of SurfaceView that uses the dedicated surface for displaying OpenGL rendering. NativeActivity. Convenience for implementing an activity that will be implemented purely in native code.
Surface objects enable apps to render images to be presented on screens. SurfaceHolder interfaces enable apps to edit and control surfaces.
update
function should call invalidate()
or postInvalidate()
in order for the View to redraw.setWillNotDraw(false)
in e.g. surfaceCreated
.If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With