我正在尝试创建一个简单的绘图应用程序,用户可以按下我的自定义视图的一个点,并拖动它来创建一个矩形或一个圆,我设法做到了很容易。
当我尝试向用户显示当形状变大或变小时移动其形状的进度时,出现了问题。
简单地解释一下,如果你在桌面上点击并拖动鼠标,我想要的效果和windows上的一样。
这是我的onTouchEvent
方法,我该怎么做?
if (chosenShape.equals("rectangle")) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: // user start pressing
//starting point - one side of the rect
starting_X = touchX;
starting_Y = touchY;
break;
case MotionEvent.ACTION_MOVE: // user move while pressing
break;
case MotionEvent.ACTION_UP: // user release
//ending point - thie side of the circle
ending_X = touchX;
ending_Y = touchY;
// draw the rectangle - opposite side of the rect
drawCanvas.drawRect(starting_X, starting_Y, ending_X, ending_Y, drawPaint);
chosenShape = ""; // reseting the shape to keep drawing
break;
default:
return false;
}
} else {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
drawPath.moveTo(touchX, touchY);
break;
case MotionEvent.ACTION_MOVE:
drawPath.lineTo(touchX, touchY);
break;
case MotionEvent.ACTION_UP:
drawCanvas.drawPath(drawPath, drawPaint);
drawPath.reset();
break;
default:
return false;
}
}
发布于 2016-07-24 00:19:08
在case MotionEvent.ACTION_MOVE:
中,您需要设置ending_X
和ending_Y
的值。
更好的方法是跟踪intermediate_x
和intermediate_y
,这样你就可以绘制不同的效果,例如一条虚线而不是实线。
你最好存储用户绘制的所有形状,并在每次出现触摸事件时刷新画布,否则在拖动时绘制的形状将不会被清除。
https://stackoverflow.com/questions/38542520
复制相似问题