У меня есть представление, по которому я хочу добавить onClickListener. Проблема заключается в том, что слушатель срабатывает, даже когда пользователь выполняет операцию перетаскивания. Как я могу отключить нажатие, когда пользователь перетягивает, и обрабатывать только, когда это щелчок без перетаскивания?
Для полноты, использую что-то вроде ниже, чтобы добавить onClickListener -
private void installClickHandler(final GraphicalView x) {
x.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent myIntent = new Intent(getApplicationContext(), BillTablesActivity.class);
startActivity(myIntent);
}
}
});
}
установите onTouchListener(), который либо возвращает true, если вы перетаскиваете, либо возвращает false, в противном случае ваш OnClickListener обрабатывает событие. другими словами, это зависит от вас, чтобы решить, рассматривать ли это прикосновение даже щелчком или нет.
чтобы решить, есть ли что-то щелчок или перетащить (или длительное нажатие), реализация вашего OnTouchListener должна отслеживать события ACTION_DOWN
и ACTION_UP
и сравнивать время между ними. короткий интервал был бы кликом, более длительный период времени был бы перетаскиванием или длительным нажатием.
конкретная реализация оставлена в качестве упражнения для читателя :)
isDragging
? И когда начинается перетаскивание, установите флаг в истинное значение. А внутриonClick
метод проверки , еслиisDragging
ложно?