2015-06-25 6 views
0

Например, я перемещаю палец по экрану, а затем резервное копирование. Таким образом, это должно считаться двумя перетаскиваниями, последним движением до того, как я приостановился на долю секунды, и после этого, когда я вернулся. Я в основном рассчитываю каждый раз, когда я делаю новое движение, не отрывая палец от экрана. Итак, как мне получить последнее движение, прежде чем я прекращу движение, не поднимая палец?android как получить последнее движение

Я использую событие движения. Вот код в action_move:

case MotionEvent.ACTION_MOVE: 

     posY = event.getY(); 
     posX = event.getX(); 
     diffPosY = posY - oldY; 
     diffPosX = posX - oldX; 

     if (checkMovement(posY, oldY)){ 
      if (diffPosY > 0 || diffPosY < 0){ 

       count +=1; 


       } 
     } 


    public boolean checkMovement(float posY, float oldY) { 

    int newY = Math.round(posY); 
    double distance = Math.abs(newY - oldY); 

    oldY = newY; 

    if (distance < 25) 


    return false; 

    return true; 
} 

ответ

1

Простой, как этот

private int mLastMovY = 0; 

case MotionEvent.ACTION_MOVE: 

     posY = event.getY(); 
     posX = event.getX(); 
     diffPosY = posY - oldY; 
     diffPosX = posX - oldX; 
     if(diffPosY > 0){//up 
      if(mLastMovY != 0){//if have any drag down before, the value will != 0 
       count +=1; 
       //could save value of mLastMovY before reset it, this is last position when user drag down 
       mLastMovY = 0;//reset it to avoid 'count' be increased 
      } 
     } 
     else{//down 
      mLastMovY = posY;//drag down will assign value to mLastMovY 
     } 
+0

Спасибо, но когда я двигаться вверх и вниз, почему она насчитывает более двух ходов, например, 10 или 14 или более? – Kaal

+0

см. Мой ответ на вопрос –

+0

Спасибо за ответ, было бы хорошо, если бы вы объяснили код с комментариями - от «mLastMovY = 0» вперед, пожалуйста? – Kaal