2016-05-12 34 views
1

我正在創建一個自定義UI組件,用戶可以在其中上傳地圖的圖像,然後用戶可以指定某些位置並顯示一個圖釘。首先映像加載用戶將能夠平移和縮放到任何位置。爲此,我使用了下面的例子,它像一個魅力。 TouchImageView如何檢測任何視圖的長按位置?

下一部分是在圖像上長時間按下時添加一個pin。爲此,我在地圖圖像上使用了絕對佈局,並在最後添加了OnTouchListener和Returned false以使ImageView上的觸摸偵聽器也能正常工作。我實現了OnTouchListener如下

absoluteLayout.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, final MotionEvent event) { 
      switch (event.getAction()){ 
       case MotionEvent.ACTION_DOWN: 
        count=-1;// reset count. Thredd will start as 0 
        released = false;// Touch long press is started 
        final Handler handler = new Handler(); 
        new Thread(new Runnable() { 
         @Override 
         public void run() { 
          while(!released){//Stop count if touch released 
           try { 
            count++;// Count every 200 ms 
            Thread.sleep(200); 
            if(count>10){ //if pressed for 200*10= 2 seconds 
             released=true; 

             handler.post(new Runnable() { 
              @Override 
              public void run() { 
               addPin((int) event.getX(), (int) event.getY());//Calling the method to add the pin 
              } 
             }); 
            } 
           } catch (InterruptedException e) { 
            e.printStackTrace(); 
           } 
          } 

         } 
        }).start(); 
        break; 

       case MotionEvent.ACTION_UP: 
        released=true;// touch is released 
        break; 
       case MotionEvent.ACTION_MOVE: 
        released=true; // touch is a movement therefore release long press 
        break; 
      } 

      return false; 
     } 
    }); 

但這裏的問題是,隨着情況:「MotionEvent.ACTION_MOVE」它總是讓長按釋放。但沒有它,如果用戶試圖平移或縮放imageView,它會添加一個pin。

如何檢測觸摸中是否存在移動並忽略用戶縮放或平移地圖?

在此先感謝。

回答

0

您可以指定一個最小移動量,以確定它是否是意外移動或不移動,如解釋here

相關問題