Как я могу обнаружить щелчок в прослушивателе onTouch?
У меня есть ViewPager внутри ScrollView. Мне нужно иметь возможность прокручивать как по горизонтали, так и по вертикали. Для достижения этой цели пришлось отключить вертикальную прокрутку при каждом касании моего ViewPager (v.getParent().requestDisallowInterceptTouchEvent(true);), чтобы его можно было прокручивать по горизонтали.
Но в то же время мне нужно иметь возможность щелкнуть ViewPager, чтобы открыть его в полноэкранном режиме.
Проблема в том, что onTouch вызывается перед onClick, а мой OnClick никогда не вызывается.
Как я могу реализовать и то, и другое при касании onClick?
@Override publicbooleanonTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: startX = event.getX(); startY = event.getY(); break; case MotionEvent.ACTION_UP: floatendX= event.getX(); floatendY= event.getY(); if (isAClick(startX, endX, startY, endY)) { launchFullPhotoActivity(imageUrls);// WE HAVE A CLICK!! } break; } v.getParent().requestDisallowInterceptTouchEvent(true); //specific to my project returnfalse; //specific to my project }
Также стоит отметить, что в GestureDetector встроено нечто подобное. Посмотрите на onSingleTapUp
Ответ 3
Разрабатывать и то, и другое - неправильная идея. когда пользователь может делать разные вещи, прикасаясь к экрану, понимание целей пользователя немного затруднено, и для этого нужно разработать фрагмент кода.
Два решения:
1- (идея получше) в вашем событии onTouch проверьте, есть ли движение. Вы можете сделать это, проверив, есть ли какое-либо движение, используя:
ACTION_UP ACTION_DOWN ACTION_MOVE
сделайте это следующим образом
if(event.getAction() != MotionEvent.ACTION_MOVE)
вы даже можете проверить расстояние перемещения пальца пользователя по экрану, чтобы убедиться, что движение произошло, а не случайное перемещение при нажатии. сделайте это следующим образом:
считайте это щелчком, если ничего из вышеперечисленного не произошло, и делайте то, что вы хотите сделать с помощью click .
2) если это соответствует вашему пользовательскому интерфейсу, создайте кнопку, изображение или что-нибудь еще для полного показа и установите для него onClick.