Метод ScaleGestureDetector.OnScaleGestureListener.onScaleEnd () не выполняется

Обновление: я понял, что происходит. См. Комментарии.

Я пытаюсь написать ViewSwitcher, который передает все жесты своему первому потомку, пока он не получит жест масштабирования; затем он передает их своему второму дочернему элементу, пока этот дочерний элемент снова полностью не уменьшится, когда он вернется к первому дочернему элементу. У моего подкласса есть ScaleGestureDetector, и я сделал очень простой прослушиватель:

    protected class OnScaleModeSwitcher implements ScaleGestureDetector.OnScaleGestureListener
    {
        protected PageFlipSwitcher owner;

        public OnScaleModeSwitcher(PageFlipSwitcher newOwner)
        {
            super();
            owner = newOwner;
        }

        @Override
        public boolean onScale(ScaleGestureDetector detector) {
            return false;
        }

        @Override
        public boolean onScaleBegin(ScaleGestureDetector detector) {
            owner.onScaleBegin();
//returning false here causes the rest of the gesture to be ignored.
            return false;
        }

        @Override
        public void onScaleEnd(ScaleGestureDetector detector) {
            owner.onScaleEnd();
        }
    }

Как вы можете видеть, все, что он делает, это берет ссылку на объект-владелец при построении, а затем передает некоторые события методам внутри класса-владельца. Однако onScaleEnd () не достигается кодом.

Я знаю, что onInterceptTouchEvent может быть немного рискованным; Я как можно внимательнее следовал предложениям в документации по Android и

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev)
    {
        onTouchEvent(ev);
        return false;
    }

    @Override
    public boolean onTouchEvent(MotionEvent ev)
    {
//mode is the name of the ScaleGestureDetector
        mode.onTouchEvent(ev);

//this code just passes events to the children
//it seems to work OK
        if(zoomActive)
        {
            //ZoomSwitcher
            getChildAt(1).onTouchEvent(ev);
        }
        else
        {
            //Gallery
            getChildAt(0).onTouchEvent(ev);
        }
        return true;
    }

где-то еще читал, что GestureDetector может не получать событие ACTION_UP:

Android: Как определить, когда прокрутка закончилась

Is что здесь происходит? Если да, то в чем смысл метода onScaleEnd ()?

РЕДАКТИРОВАТЬ:

Я решил это: это потому, что мои методы возвращают false. Eclipse автоматически реализовал некоторые заглушки, и я не изменил возвращаемые значения при их заполнении.

5
задан Community 23 May 2017 в 10:29
поделиться