Просмотр пейджера Android Filter Touch Events

Я использую пейджер для создания галереи изображений. В настоящее время у меня есть собственный ImageView, который позволяет пользователю сжимать, масштабировать и панорамировать. Проблема, с которой я сталкиваюсь, заключается в том, как я различаю щепотку для масштабирования/панорамирования и переключение страницы в пейджере просмотра.

Я попытался использовать onInterceptTouchEvent для просмотра пейджера, но этот метод фиксирует только одно касание точки действия вниз. Таким образом, невозможно отличить касание вниз двумя пальцами, опускающимися для масштабирования.

Я попытался реализовать сенсорный прослушиватель на пейджере просмотра, но получил ряд ошибок. Ниже приведен код, за которым следуют ошибки.

viewPager.setOnTouchListener (новый OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        Log.d("Action", "Action-Touch List "+Integer.toString(getAction(event.getAction())));
        int action = getAction(event.getAction());
        View vv =(View) viewPager.getChildAt(0);
        ImageZoomView izv= (ImageZoomView) vv.findViewById(R.id.ViewImagePreview);


        if (Float.compare(izv.getZoomState().getPanX(), 0.5f) == 0
                && Float.compare(izv.getZoomState().getPanY(), 0.5f) == 0
                && Float.compare(izv.getZoomState().getZoom(), 1.0f) == 0
                && action != ACTION_MULTITOUCH_DOWN
                && action != ACTION_MULTITOUCH_UP) {

            **Error Here**viewPager.onTouchEvent(event);
            return true;
        } else {

            izv.onTouchEvent(event);
            return true;

        }

    }
});

getaction корректно работает при множественных касаниях и т.д.

04-28 12:03:57.365: E/AndroidRuntime(6662): FATAL EXCEPTION: main
04-28 12:03:57.365: E/AndroidRuntime(6662): java.lang.ArrayIndexOutOfBoundsException
04-28 12:03:57.365: E/AndroidRuntime(6662):     at android.view.MotionEvent.getX(MotionEvent.java:907)
04-28 12:03:57.365: E/AndroidRuntime(6662):     at android.support.v4.view.MotionEventCompatEclair.getX(MotionEventCompatEclair.java:32)
04-28 12:03:57.365: E/AndroidRuntime(6662):     at android.support.v4.view.MotionEventCompat$EclairMotionEventVersionImpl.getX(MotionEventCompat.java:86)
04-28 12:03:57.365: E/AndroidRuntime(6662):     at android.support.v4.view.MotionEventCompat.getX(MotionEventCompat.java:210)
04-28 12:03:57.365: E/AndroidRuntime(6662):     at android.support.v4.view.ViewPager.onTouchEvent(ViewPager.java:1771)
04-28 12:03:57.365: E/AndroidRuntime(6662):     at com.**See Double asterisk in above code)

Любая помощь будет оценена по достоинству.


person ControlAltDelete    schedule 28.04.2013    source источник


Ответы (1)


Похоже, ошибка была из-за того, что у меня в манифесте случайно была минимальная версия 3 вместо 4 или новее. Я все еще пытаюсь заставить работать галерею с плавным касанием.

 <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" />
person ControlAltDelete    schedule 04.05.2013