1

我正在使用视图寻呼机来创建图片库。我目前有一个自定义 ImageView,它允许用户捏合、缩放和平移。我遇到的问题是如何区分缩放/平移的捏合和视图寻呼机中的页面切换。

我尝试将 onInterceptTouchEvent 用于视图寻呼机,但此方法仅捕获操作向下的单点触摸事件。因此,用两根手指向下捏以缩放是不可能区分向下触摸的。

我尝试在 View Pager 上实现触摸侦听器,但出现一系列错误。下面是错误代码。

viewPager.setOnTouchListener(new 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)

任何帮助,将不胜感激。

4

1 回答 1

0

看起来错误是因为我在清单中意外地使用了最小版本 3 而不是 4 或更高版本。我仍在尝试使启用平滑触摸的画廊正常工作。

 <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" />
于 2013-05-04T13:23:57.360 回答