public class MySurferViewSImpleDraw extends SurfaceView implements SurfaceHolder.Callback,Runnable {
private Canvas mCanvas;
private Paint mPaint;
private SurfaceHolder mHolder;
private Boolean mIsDrawing=true;
private Path mPath;
private void init(){
mPaint=new Paint();
mPaint.setColor(Color.GRAY);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeWidth(30);
//获取holder
mHolder=getHolder();
//设置监听
mHolder.addCallback(this);
mPath=new Path();
}
public MySurferViewSImpleDraw(Context context) {
super(context);
init();
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
new Thread(this).start();
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
mIsDrawing=false;
}
@Override
public void run() {
while(mIsDrawing){
draw();
}
}
void draw(){
mCanvas=mHolder.lockCanvas();
if (mCanvas==null)
return;
mCanvas.drawPath(mPath,mPaint);
if (mCanvas!=null){
mHolder.unlockCanvasAndPost(mCanvas);
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
int x,y;
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
x= (int) event.getX();
y= (int) event.getY();
mPath.moveTo(x,y);
break;
case MotionEvent.ACTION_MOVE:
x= (int) event.getX();
y= (int) event.getY();
mPath.lineTo(x,y);
break;
}
return true;
}
}
surfaceView使用模板。
最新推荐文章于 2022-09-18 12:50:57 发布