我正在尝试使用触摸事件在屏幕上创建绘图。我成功地做了同样的事情。这是我正在使用的代码
public class DrawView extends View implements OnTouchListener {
private static final String TAG = "DrawView";
List<Point> points = new ArrayList<Point>();
Paint paint = new Paint();
public DrawView(Context context) {
super(context);
setFocusable(true);
setFocusableInTouchMode(true);
this.setOnTouchListener(this);
paint.setColor(Color.BLACK);
paint.setAntiAlias(true);
}
@Override
public void onDraw(Canvas canvas) {
for (Point point : points) {
canvas.drawCircle(point.x, point.y, 8, paint);
// Log.d(TAG, "Painting: "+point);
}
}
public boolean onTouch(View view, MotionEvent event) {
// if(event.getAction() != MotionEvent.ACTION_DOWN)
// return super.onTouchEvent(event);
Point point = new Point();
point.x = event.getX();
point.y = event.getY();
points.add(point);
invalidate();
Log.d(TAG, "point: " + point);
return true;
}
}
class Point {
float x, y;
@Override
public String toString() {
return x + ", " + y;
}
}
正如您所看到的,我正在为用户触摸的每个点画一个圆圈。当用户慢慢移动手指时,我会得到连续线/曲线。但是如果用户快速移动他的手指,我就不会连续画画了。而是手指移动的路径上的分离点列表。
我该如何正确地做到这一点? 感谢
答案 0 :(得分:1)
你应该绘制路径而不是点本身。点击此处查看信息:http://developer.android.com/reference/android/graphics/Path.html
答案 1 :(得分:0)
我已经回答了一个类似的问题,在这篇文章中手绘地图:Hand Draw over MapView
您可以使用相同的代码,将GeoPoint
替换为Point
,并移除地理位置和点之间的转换。