自定义View-画板的实现
这里每次按下的时候就清屏了,如果不调用重置方法,之前显示在屏幕上的曲线就会一直存在
自定义类,PathLineView:
import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Path; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; /** * 画曲线 */ public class PathLineView extends View { private Path path;//曲线 private Paint paint;//画笔 /** * 记录上一次的坐标位置 */ private float toX; private float toY; public PathLineView(Context context, AttributeSet attrs) { super(context, attrs); //初始化画笔 paint = new Paint(); paint.setStrokeWidth(2); paint.setColor(0xffff0000); paint.setAntiAlias(true); paint.setStyle(Paint.Style.STROKE);//描边,空心,如果是FILL画出来就会是实心的了 path = new Path();//创建曲线 } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawPath(path,paint);//用画笔画这条曲线 } @Override public boolean onTouchEvent(MotionEvent event) { super.onTouchEvent(event); switch (event.getAction()){ case MotionEvent.ACTION_DOWN: path.reset();//重置,每次按下就会清屏了 toX = event.getX(); toY = event.getY(); path.moveTo(toX,toY);//曲线的起点位置 break; case MotionEvent.ACTION_MOVE: toX = event.getX(); toY = event.getY(); path.lineTo(toX,toY);//曲线连接到该点 break; case MotionEvent.ACTION_UP: break; } invalidate();//重绘 return true; } }
布局文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.workspace.my.drawline.MainActivity"> <com.workspace.my.drawline.PathLineView android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ffcccc"/> </RelativeLayout>
activity中直接显示上面布局就行
效果图: