【发布时间】:2014-04-01 16:32:07
【问题描述】:
我希望程序在屏幕被触摸时画一个圆圈,如果屏幕被触摸到另一个位置,我希望程序再次画一个圆圈,但不删除旧的!
现在我的问题是它不只是在旧圆圈之外绘制一个新圆圈。它绘制一个新圆圈并删除旧圆圈。我试图找到一个解决方案,但没有任何效果。
那么谁能帮帮我?
所以它现在可以工作了!
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Point;
import android.graphics.PointF;
import android.util.AttributeSet;
import android.util.SparseArray;
import android.view.MotionEvent;
import android.view.View;
public class SingleTouchEventView extends View {
private Paint paint = new Paint();
List<Point> points = new ArrayList<Point>();
public SingleTouchEventView(Context context, AttributeSet attrs) {
super(context, attrs);}
protected void onDraw(Canvas canvas){
super.onDraw(canvas);
paint.setColor(Color.GREEN);
for(Point p: points){
canvas.drawCircle(p.x, p.y, 20, paint);
}
invalidate();
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
Point p = new Point();
p.x = (int)event.getX();
p.y = (int)event.getY();
points.add(p);
invalidate();
case MotionEvent.ACTION_MOVE: // a pointer was moved
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL: {
break;
}
}
invalidate();
return true;
}
}
【问题讨论】:
-
您是新手,但您也可以粘贴代码..
-
当您重绘画布时,您可能会擦除前一个圆圈。您需要为您的圈子保留一份参考列表。
-
是的,我必须尝试如何做到这一点!:) 它现在正在工作!谢谢大家!
标签: java android geometry touch-event ondraw