我有一个自定义布局,根据触摸输入绘制一条线。我已经让它画出了一条线,但当用户触摸屏幕时,该线会消失并绘制一条新线。我希望它能够画出一条新线并将以前的线保留在那里。
这是我的代码:
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
public class DrawView extends View {
Paint paint = new Paint();
float startX;
float startY;
float stopX;
float stopY;
public DrawView(Context context, AttributeSet attrs) {
super(context, attrs);
paint.setAntiAlias(true);
paint.setStrokeWidth(6f);
paint.setColor(Color.BLACK);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeJoin(Paint.Join.ROUND);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawLine(startX, startY, stopX, stopY, paint);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
startX = event.getX();
startY = event.getY();
return true;
case MotionEvent.ACTION_MOVE:
stopX = event.getX();
stopY = event.getY();
break;
case MotionEvent.ACTION_UP:
stopX = event.getX();
stopY = event.getY();
break;
default:
return false;
}
Invalidate();
return true;
}
}
Path path = new Path(); path.moveTo(0, 0); path.lineTo(0,50); path.lineTo(100,50); path.lineTo(100, 0); path.close();
- Jorge Arimanycurrent.stopX = event.getX(); current.stopY = current.startY;
。要确定用户是否希望当前行为水平还是垂直,您可以将事件坐标与起始坐标进行比较,并选择具有最大差异的轴。 - tom