思路:
-
布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <android.pims.com.drawingboard.MyView android:id="@+id/draw" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1"/> <Button android:id="@+id/btn" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="清理画布"/>
-
View画布画笔设置
public class MyView extends SurfaceView implements SurfaceHolder.Callback,View.OnTouchListener {
private Paint p =new Paint(); //画笔
private Path path=new Path(); //路径public MyView(Context context, AttributeSet attrs) { //自定义控件 super(context,attrs); getHolder().addCallback(this); //回调函数 //初始化画笔 p.setColor(Color.RED); p.setTextSize(30); p.setAntiAlias(true); //清理锯齿 p.setStyle(Paint.Style.STROKE); //空心 setOnTouchListener(this); //监听事件 } //绘制方法 public void draw(){ //锁定画布 Canvas canvas=getHolder().lockCanvas(); //过程 canvas.drawColor(Color.WHITE); //白色画板 canvas.drawPath(path,p); //进行绘制 //解锁画布 getHolder().unlockCanvasAndPost(canvas); } //清理画布 public void clear(){ path.reset(); //重置 draw(); } @Override public void surfaceCreated(SurfaceHolder surfaceHolder) { draw(); } @Override public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) { } @Override public void surfaceDestroyed(SurfaceHolder surfaceHolder) { } @Override public boolean onTouch(View view, MotionEvent event) { switch (event.getAction()){ //按下事件 case MotionEvent.ACTION_DOWN: path.moveTo(event.getX(),event.getY()); draw(); break; //移动事件 case MotionEvent.ACTION_MOVE: path.lineTo(event.getX(),event.getY()); draw(); break; } return true; } }
-
主文件 清理画布
public class MainActivity extends AppCompatActivity {
//清理画布
private Button btn;
private MyView view;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn=(Button)findViewById(R.id.btn);
view=(MyView) findViewById(R.id.draw);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
view.clear();
}
});
}
}