Я реализовал пользовательский вид с некоторыми детьми. Вид можно прокручивать, используя стандартный жест перетаскивания. Также каждый ребенок может быть нажата. Проблема в том, что когда я начинаю перетаскивать вид, один из дочерних элементов получает событие «вниз» и на секунду меняет свое состояние на «нажатое». Я бы предпочел стандартное поведение просмотра списка - ребенок переходит в нажатое состояние, когда пользователь продолжает нажимать на этого ребенка пальцем в течение примерно 50 мс. Это уменьшит мигание, вызванное неправильным прочтением события нажатия.
Я знаю, что мне нужно как минимум 2 события, чтобы определить, касается ли пользователь касания или перетаскивания вида. На данный момент я использую TimerTask для планирования события «вниз». Когда я получаю событие «move» до того, как будет выполнено мое событие «down», я знаю, что пользователь перетаскивает, и я могу отменить запланированное событие.
Я знаю, что это довольно глупо. Я также пытался использовать жест-детектор для обнаружения событий перетаскивания и касания, но для правильной реализации изменения состояния просмотра с нажатой на стандартную настройку требуется, когда пользователь перемещает палец и начинает перетаскивать представление.
У меня вопрос - как это реализовано в Android ViewView? Я пытался скопировать их решение из реализации listview, но оно настолько огромно, что я не могу с этим справиться. Просто я не вижу кода, ответственного за обработку такой ситуации.