2016-05-12 2 views
1

Я создаю пользовательский компонент пользовательского интерфейса, где пользователь может загрузить изображение карты, а затем пользователь может указать определенные местоположения и отобразить вывод. Сначала по изображению загруженной карты пользователь сможет панорамировать и масштабировать любую позицию. для этого я использовал следующий пример, который работает как шарм. TouchImageViewКак определить длинную нажатую позицию любого вида?

Следующая часть должна была добавить штифт, когда он долго нажимается на изображение. Для этого я использовал Абсолютную компоновку над изображением карты и добавил конец OnTouchListener и Return 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» всегда делают длительное нажатие отпущена. Но без него, если пользователь пытается панорамировать или увеличивать изображение, он добавит булавку.

Как я могу определить, есть ли движение на ощупь и игнорировать, когда пользователь масштабирует или панорамирует карту?

Заранее спасибо.

ответ

0

Вы можете указать минимальное количество движения, чтобы быть уверенным, что это случайное движение или нет, как описано here

Смежные вопросы