我正在使用视图寻呼机来创建图片库。我目前有一个自定义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)
任何帮助将不胜感激。
答案 0 :(得分:0)
看起来这个错误是因为我在Manifest中出现了最小版本3而不是4或更高版本。我仍然试图让一个流畅的触摸启用画廊工作。
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" />