Я делаю одноэкранное приложение простой логической схемы. Я использую onTouchEvent
для обработки взаимодействия с пользователем. Я сейчас использую ACTION_UP
, ACTION_MOVE
, & ACTION_DOWN
, но это позволяет мне использовать только один жест. Я хочу иметь возможность выбора опции в моем пользовательском интерфейсе, например, «И» ворота. Я хочу использовать одно касание, чтобы выбрать то, что я хочу сделать, а затем следующее касание, чтобы поместить ворота на экран. Вместо этого мой onTouchEvent
позволяет мне только касаться нужного компонента, и я должен держать палец на экране, чтобы перетащить его в место, где я хочу его разместить. Это не хочу, я хочу.
Я пытался исследовать, как реализовать какую-то переменную состояния, чтобы onTouchEvent
ожидал следующего прикосновения, но я не думаю, что правильно понимаю, как это реализовать.
@Override
public boolean onTouchEvent(MotionEvent motionEvent) {
Log.d("Debugging", "In onTouchEvent");
if((motionEvent.getAction() & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_DOWN) {
Touch.horizontalTouched = (int)motionEvent.getX()/ grid.getBlockSize();
Touch.verticalTouched = (int)motionEvent.getY()/ grid.getBlockSize();
whatWasTouched = whatWasTouched(Touch.horizontalTouched, Touch.verticalTouched);
}else if((motionEvent.getAction() & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_MOVE){
//do nothing, finger is moving on screen
}
else if((motionEvent.getAction() & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_UP){
Touch.secondHorizontalTouch = (int)motionEvent.getX()/ grid.getBlockSize();
Touch.secondVerticalTouch = (int)motionEvent.getY()/ grid.getBlockSize();
placeComponent();
draw();
}
return true;
}
Я ожидаю, что мое первое касание на экране сможет выбрать параметр, например: «И», «ИЛИ», «НЕ», «ПЕРЕКЛЮЧАТЕЛЬ», «РЕДАКТИРОВАТЬ» и т. Д., Итогда мое второе касание завершает желаемое действие. Я также хочу иметь возможность прикоснуться к компоненту, который я поместил на экран, а затем к другому компоненту, чтобы я мог соединить их вместе.