В моей программе я рисую прямоугольник, пока палец не работает и не перемещается, чем стирает его после того, как палец вверх. это показать пользователю диапазон значений, которые он использует как "предположение", чтобы найти корень. однако прямоугольник никогда не появляется! Но, если я удалю вызов, чтобы закрыть прямоугольник в части "action_up", пользователь может нарисовать прямоугольник. Здесь код:
в функции on-draw:
if(dataline>1)//if greater than 1, draw rectangle
{
myPaint.setColor(Color.CYAN);
canvas.drawRect(tX1,0, tX2,canvas.getHeight(),myPaint);
}
в функции события движения: public boolean onTouchEvent (MotionEvent ev) { final int action = ev.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN: {
final float x = ev.getX();
final float y = ev.getY();
// Remember where we started
mLastTouchX = x;
mLastTouchY = y;
tX1=(int)ev.getX();
tX2=tX1;
x_1 = ev.getX();
x_1=(x_1-X1)/(zoom_x);
clicks= 1;
tX1=(int) ev.getX();//set first x coord
tX2=tX1;// make second x coord equal to the first
}
case MotionEvent.ACTION_MOVE: {
final float x = ev.getX();
final float y = ev.getY();
// Calculate the distance moved
final float dx = x - mLastTouchX;
final float dy = y - mLastTouchY;
mLastTouchX = x;
mLastTouchY = y;
dataline=2;//let onDraw() draw the rectangle while dragging finger
tX2+= (int)dx;// find new second coordinate
}
case MotionEvent.ACTION_UP: {
dataline=0;//if commented out, rectangle is drawn otherwise, it is never seen.
}
}
return true;
}
Проблема решена! Я узнал, что вам нужно поставить оператор возврата в каждом случае, иначе он просто запустит все случаи.
break
s, а не return
s. return
просто выйдет из метода, break
выйдет из оператора switch. download.oracle.com/javase/tutorial/java/nutsandbolts/...
break;
s