Пользовательский вид с кнопками реализует OnGestureListener

Я ломал голову над последней парой часов, гуглил к черту гугл, и ни один из примеров на StackOverflow или других местах не работал у меня, так что вот оно...

У меня есть собственное представление, которое расширяет LinearLayout и реализует GestureDetector.OnGestureListener.

В моем пользовательском макете у меня есть 3 кнопки, каждая из которых имеет прослушиватель кликов. Я хочу иметь возможность Fling везде в представлении, чтобы что-то выполнять, а также иметь возможность нажимать на кнопки.

Моя функция onFling отлично работает, если я бросаю внутрь вида, но не над одной из кнопок. Если я нажимаю на одну из кнопок, в большинстве случаев она выполняет щелчок, а в некоторых ничего.

Вот соответствующая часть моего кода:

@Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
            float velocityY) {
        if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) {
            return false;
        }
        // right to left swipe
        if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE
                && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
            viewFlipper.setInAnimation(slideLeftIn);
            viewFlipper.setOutAnimation(slideLeftOut);
            viewFlipper.showNext();
            return true;

        } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE
                && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
            viewFlipper.setInAnimation(slideRightIn);
            viewFlipper.setOutAnimation(slideRightOut);
            viewFlipper.showPrevious();
            return true;
        }

        return false;
    }

    @Override
    public boolean onDown(MotionEvent e) {
        // TODO Auto-generated method stub
        return true;
    }

    @Override
    public void onLongPress(MotionEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
            float distanceY) {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public void onShowPress(MotionEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public boolean onSingleTapUp(MotionEvent e) {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (gestureDetector.onTouchEvent(event)) {
            return gestureDetector.onTouchEvent(event);
        }
        return false;
    }

попробовал любую комбинацию return true; вернуть ложь; Я мог подумать о... Был бы признателен за любую помощь! :)

Спасибо!

7
задан Lior Iluz 7 June 2012 в 15:44
поделиться