怎么用surfaceview绘图
时间: 2023-05-26 07:06:57 浏览: 45
1.创建一个自定义的SurfaceView类并继承SurfaceView类。
2.在构造函数中获得SurfaceHolder对象并设置SurfaceHolder.Callback回调函数。
3.在回调函数的surfaceCreated方法中获取Canvas对象,开始绘图。
4.在回调函数的surfaceChanged方法中根据需要更新绘图内容。
5.在回调函数的surfaceDestroyed方法中停止绘制,释放Canvas对象。
6.在绘图完成后调用invalidate方法使SurfaceView的内容更新。
下面是示例代码:
public class DrawingView extends SurfaceView implements SurfaceHolder.Callback {
private SurfaceHolder surfaceHolder;
private Paint paint;
public DrawingView(Context context) {
super(context);
surfaceHolder = getHolder();
surfaceHolder.addCallback(this);
paint = new Paint();
paint.setColor(Color.BLACK);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(5);
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
Canvas canvas = surfaceHolder.lockCanvas();
canvas.drawColor(Color.WHITE);
surfaceHolder.unlockCanvasAndPost(canvas);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
// TODO: 根据需要更新绘图内容
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO: 停止绘制,释放Canvas对象
}
public void drawCircle(float x, float y, float radius) {
Canvas canvas = surfaceHolder.lockCanvas();
canvas.drawCircle(x, y, radius, paint);
surfaceHolder.unlockCanvasAndPost(canvas);
}
}
然后在Activity中使用如下代码调用绘图:
DrawingView drawingView = new DrawingView(this);
setContentView(drawingView);
drawingView.drawCircle(200, 200, 50);