android中实现在中实现在ImageView上随意画线涂鸦的方法上随意画线涂鸦的方法
今天小编就为大家分享一篇android中实现在ImageView上随意画线涂鸦的方法,具有很好的参考价值,希望对
大家有所帮助。一起跟随小编过来看看吧
我实现的思路:我实现的思路:
1.继承ImageView类
2.重写onTouchEvent方法,在ACTION_MOVE(即移动时),记录下所经过的点坐标,在ACTION_UP时(即手指离开时,这
时一条线已经画完),将所画的线(点的集合)保存在一个集合中
3.重写onDraw方法,利用canvas和所记录下的线和点画出线来
可能我讲的十分笼统,下面来看看实际的代码吧可能我讲的十分笼统,下面来看看实际的代码吧
//代表ImageView上的一点
public class ViewPoint
{
float x;
float y;
}
//表示一条线
public class Line
{
ArrayList<ViewPoint> points = new ArrayList<ViewPoint>();
}
如上所示,ViewPoint表示一点,而Line表示一条线
然后在扩展的然后在扩展的ImageView类上声明如下:类上声明如下:
public class HandWritingImageView extends ImageView
{
private Paint paint;
//当前正在画的线
private Line current = new Line();
//所有画过的线
private ArrayList<Line> lines = new ArrayList<Line>();
}
随后重写随后重写onTouchEvent方法方法
@Override
public boolean onTouchEvent(MotionEvent event)
{
//获取坐标
clickX = event.getX();
clickY = event.getY();
if (event.getAction() == MotionEvent.ACTION_DOWN)
{
invalidate();
return true;
}
else if (event.getAction() == MotionEvent.ACTION_MOVE)
{
ViewPoint point = new ViewPoint();
point.x = clickX;
point.y = clickY;
//在移动时添加所经过的点
current.points.add(point);
invalidate();
return true;
}
else if (event.getAction() == MotionEvent.ACTION_UP)
{
//添加画过的线
lines.add(current);
current = new Line();
invalidate();
}
评论0