У меня есть вопрос относительно обработки сенсорных событий
для CustomView
. Я динамически добавляю настраиваемое представление в макет ( т.е. FrameLayout). Эти пользовательские представления имеют touchListeners для вытягивания точек в углах (это показано на изображении ниже). Наряду с этим я должен перетаскивать общий вид на экране, если пользователь касается других точек, кроме этих угловых точек (цветовая область на изображении), должен перетаскивать вид, иначе нет, а также если пользователь касается вне этого просмотр, я не хочу запускать какие-либо сенсорные слушатели.
Я могу вытащить эти точки с помощью этого кода
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
if (topTouchArea.contains(event.getX(), event.getY())) {
currentTouch = TOUCH_TOP;
} else if (RightTouchArea.contains(event.getX(),event.getY())) {
currentTouch = TOUCH_RIGHT;
} else if (LeftTouchArea.contains(event.getX(),event.getY())) {
currentTouch = TOUCH_LEFT;
} else {
return false; //Return false if user touches none of the corners
}
return true;
case MotionEvent.ACTION_MOVE:
switch (currentTouch) {
case TOUCH_TOP:
top.x = event.getX();
top.y = event.getY();
invalidate();
return true;
case TOUCH_RIGHT:
Right.x = event.getX();
Right.y = event.getY();
invalidate();
return true;
case TOUCH_LEFT:
Left.x = event.getX();
Left.y = event.getY();
invalidate();
return true;
}
case MotionEvent.ACTION_UP:
switch (currentTouch) {
case TOUCH_TOP:
top.x = event.getX();
top.y = event.getY();
invalidate();
currentTouch = NONE;
return true;
case TOUCH_RIGHT:
Right.x = event.getX();
Right.y = event.getY();
invalidate();
currentTouch = NONE;
return true;
case TOUCH_LEFT:
Left.x = event.getX();
Left.y = event.getY();
invalidate();
currentTouch = NONE;
return true;
}
return false;
}
return false;
}
Как я могу добиться этого перетаскивания вместе с указанными выше символами формата CustomView....