2013-04-09 3 views
0

В настоящее время я использую функцию MotionEvent.ACTION_MOVE, чтобы определить, перемещает ли пользователь объект (в данном случае ImageView).Нажмите + переместить объект

Проблема в том, что теперь мой алгоритм усложняется, и мне нужно различать, будет ли пользователь нажимать на этот объект или перемещать его.

Я попытался использовать функцию MotionEvent.ACTION_DOWN, но проблема в том, что каждый раз, когда я нажимаю на объект, срабатывает MotionEvent.ACTION_MOVE.

Как это можно достичь? (Код очень приветствуется)

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

== EDIT ==

Вот мой код:

img_view.setOnTouchListener(new View.OnTouchListener() 
{ 
    @Override 
    public boolean onTouch(View v, MotionEvent event) 
    { 
     switch(event.getAction()) 
     { 
       case MotionEvent.ACTION_DOWN : 
      { 
      }     
      break; 

      case MotionEvent.ACTION_MOVE : 
      { 
      } 
        break; 

      case MotionEvent.ACTION_UP : 
      { 
      } 
      break; 
      } 

     return true; 
    } 
}); 
+0

ваш код очень приветствуются, а также. –

+0

Там у вас есть. – thomaus

ответ

1

Для обнаружения движущихся вокруг, вы хотите проверить, если чей-то палец ... движется вокруг :)

Проверьте, меняется ли положение, в ACTION_DOWN. Если в определенной степени вы знаете, что пользователь перетаскивает палец по экрану.

Возможно, вы захотите взглянуть на this tutorial project, это простой пример ImageView с несколькими действиями, такими как перетаскивание, щелчок и ущемление.

0

Ответ:

 final GestureDetector gesture_getector = new GestureDetector(HomeActivity.this, new GestureListener()); 
    view_img.setOnTouchListener(new View.OnTouchListener() 
    { 
     @Override 
     public boolean onTouch(final View view, final MotionEvent event) 
     { 
      if (gesture_getector.onTouchEvent(event)) 
      { 
       return true; 
      } 

       // End of move object detection 
      if (event.getAction() == MotionEvent.ACTION_UP) 
      { 
       if (cursor_is_scrolling) 
       { 
        cursor_is_scrolling = false;      
       }; 
      } 

      return false; 
     } 
    }); 


private class GestureListener extends SimpleOnGestureListener 
{ 
    @Override 
    public boolean onDown(MotionEvent e) { return true; } 

    // Single click detection 
    @Override 
    public boolean onSingleTapUp(MotionEvent e) 
    { 
     return true; 
    } 

    // Move object detection 
    @Override 
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) 
    { 
     cursor_is_scrolling = true; 

     return true; 
    } 
} 
Смежные вопросы