有人知道如何结合onLongPress(MotionEvent e)
和onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)
吗?想法是从onLongPress开始,但继续滑动跨越某些视图。
我现在的代码:
private class CustomListener implements View.OnTouchListener {
ImagePreviewer imagePreviewer = new ImagePreviewer();
private GestureDetector gestureDetector = new GestureDetector(getActivity(), new GestureDetector.SimpleOnGestureListener() {
ImageView currentImageView;
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
float x = e2.getX();
float y = e2.getY() + mConstraintLayoutContainerCoordinates[1];
currentImageView = getProperImage(mCurrentImagesNumberForPoll, (int) x, (int) y);
if(currentImageView != null) {
imagePreviewer.show(getActivity(), currentImageView);
}
return super.onScroll(e1, e2, distanceX, distanceY);
}
@Override
public void onLongPress(MotionEvent e) {
Log.d(TAG, "LONG PRESS");
float x = e.getX();
float y = e.getY() + mConstraintLayoutContainerCoordinates[1];
currentImageView = getProperImage(mCurrentImagesNumberForPoll, (int) x, (int) y);
if(currentImageView != null) {
imagePreviewer.show(getActivity(), currentImageView);
}
super.onLongPress(e);
}
});
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_UP || event.getAction() == MotionEvent.ACTION_CANCEL) {
Log.d("TAG", "DOWN or CANCEL ");
imagePreviewer.hide();
}
gestureDetector.onTouchEvent(event);
return true;
}
}
问题在于无论是手指滑动视图还是长按视图,都会调用onScroll()
方法,但我想先使用onLongPress()
方法,然后检测手指滑动,以便根据需要选择正确的视图进行显示。