Android-ZoomableImageView и DraggableParentView имеют конфликт - PullRequest
0 голосов
/ 22 ноября 2018

Я использую масштабируемое изображение внутри перетаскиваемого макета.Я хочу заставить их работать без каких-либо конфликтов.В настоящее время, когда я пытаюсь использовать onTouchEvent, если imageView (child), когда обнаружено более 1 fingures, означает, что pointerCount больше 1. Но проблема заключается в том, что когда я устанавливаю onTouchListener для imageView, то он называется efore onTouch родительскогопосмотреть, так что я могу false / true, чтобы включить / отключить сенсорное событие для родителя, что хорошо.Но imageView не масштабируется, потому что метод onTouch не имеет метода super.onTouch, поэтому метод переопределяется и функциональность масштабирования прекращается.С другой стороны, если я создаю собственный класс ImageR и переопределяю onTouchEvent, так как в нем есть супер метод.Тогда ни тот метод не вызывает, ни onTouch не вызывает в parent.Как я могу решить эту проблему?или как лучше справиться с этим сценарием?

CustomPhotoView:

public class CustomPhotoView extends PhotoView {
    public CustomPhotoView(Context context) {
        super(context);
    }

    public CustomPhotoView(Context context, AttributeSet attr) {
        super(context, attr);
    }

    public CustomPhotoView(Context context, AttributeSet attr, int defStyle) {
        super(context, attr, defStyle);
    }

    public CustomPhotoView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
       return event.getPointerCount() > 1 && super.onTouchEvent(event);
      }
}

Если я использую touchListener, как описано ниже, onTouch вызывает, но не может использовать супер метод для выполнения функциональности использования:

mViewDataBinding.postImg.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {

                return event.getPointerCount() > 1;
            }
        });
...