2013-04-28 32 views
1

我正在使用視圖尋呼機創建圖片庫。我目前有一個自定義ImageView,允許用戶捏和縮放和平移。我遇到的問題是如何區分縮放/平移和視圖尋呼機中頁面的切換。查看傳呼機Android篩選器觸摸事件

我試圖使用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) 

任何幫助,將不勝感激。

回答

0

它看起來像錯誤是因爲我在清單中意外地使用了min版本3,而不是4或更高版本。我仍然試圖獲得一個平滑的觸摸支持的畫廊。

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" />