2016-05-12 16 views
1

私は、ユーザーがマップの画像をアップロードできるカスタムUIコンポーネントを作成しています。そして、ユーザーは特定の場所を指定し、ピンを表示できます。最初に地図を読み込んだユーザーの画像は、任意の位置にパンおよびズームすることができます。このために、私は魅力のように動作する以下の例を使用しました。 TouchImageView任意のビューの長押し位置の検出方法は?

次の部分は、画像を長く押したときにピンを追加することでした。このために私は、マップイメージ上に絶対レイアウトを使用し、ImageViewのタッチリスナーが機能するように、最後にOnTouchListenerとReturned falseを追加しました。私は

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; 
     } 
    }); 

以下のようOnTouchListenerを実装しかし、ここで問題は、ケース付きです:「MotionEvent.ACTION_MOVE」それは常に長押しがリリースします。しかし、ユーザーが画像をパンまたはズームしようとすると、ピンが追加されます。

タッチで動きがあるかどうかを検出し、ユーザーが地図をズームまたはパンしているときに無視するにはどうすればよいですか?

ありがとうございます。

答えて

0

偶発的な動きであるかどうかを確認するには、最小移動量を指定することができます。説明はhere

関連する問題