У меня есть активность, у которой есть ViewPager, и каждая страница имеет фрагмент с Zoomable imageView.Я реализовал функцию перетаскивания, чтобы закрыть объект, используя метод onTouch в родительском представлении масштабируемого изображения, и перетаскивание работает нормально.Но я хочу проверить, обнаружены ли 2 фигуры в dispatchTouchEvent, а затем игнорировать метод onTouch и передать касание дочерним видам, чтобы я мог увеличить изображение.Я попытался написать класс следующим образом, но он не работает.Как я могу решить проблему?Таким образом, масштабирование и перетаскивание не конфликтуют друг с другом.
Спасибо
CustomView:
public class DraggableRelativeLayout extends RelativeLayout {
private final int THRESHOLD = ScreenUtils.dpToPx(10);
float diffX, diffY;
private float initialXValue;
private float initialYValue;
public DraggableRelativeLayout(Context context) {
super(context);
}
public DraggableRelativeLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
public DraggableRelativeLayout(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public DraggableRelativeLayout(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
initialXValue = ev.getX();
initialYValue = ev.getY();
// return false;
break;
case MotionEvent.ACTION_MOVE:
diffX = ev.getX() - initialXValue;
diffY = ev.getY() - initialYValue;
if (Math.abs(diffY) <THRESHOLD || ev.getPointerCount() > 1)
return true;
else
return super.dispatchTouchEvent(ev);
//break;
case MotionEvent.ACTION_UP:
break;
}
return super.dispatchTouchEvent(ev);
}
}
onTouchListener:
public class PostDetailTouchListener implements View.OnTouchListener {
public PostDetailTouchListener(Context context, View view, View viewToZoom, OnDragInteractionListener mListener) {
dragView = view;
dragListener = mListener;
zoomView = viewToZoom;
}
@Override
public boolean onTouch(View view2, MotionEvent event) {
// doing my work
}