Does anyone know how to combine onLongPress(MotionEvent e)
and onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)
? Idea is to start with onLongPress but continue with sliding across some view.
Current code i have:
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;
}
}
Thing is that either onScroll()
is called (when i slide finger across the view) or onLongPress()
, but i want to start with onLongPress()
, then detect sliding so i can choose proper view to show accordingly.