我扩展了SurfaceView并设法在Activity中绘制它.Activity应该能够在我的SurfaceView上调用一个方法来改变一些参数并重绘它.如何实现更新功能?
这是我的班级:
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? } }
update
重绘一切应包含哪些内容?这与此有关surfaceChanged
吗?
该update
函数应调用invalidate()
或postInvalidate()
按顺序重绘View.
此外,SurfaceViews默认禁用重绘.通过调用setWillNotDraw(false)
例如启用它surfaceCreated
.