2013-12-17 8 views
1

Я создаю музыкальный плеер андроида. Я собираюсь сделать кнопку Next и Forward одной кнопкой в ​​зависимости от продолжительности ее удерживания. При коротком нажатии он работает как кнопка «Далее» и при длительном нажатии работает как кнопка «вперед». Я пробовал это, используя onLongClickListener, но что происходит, он прекращает пересылку даже до того, как пользователь закроет кнопку. Как реализовать его в том виде, в котором действие не прекращается до тех пор, пока пользователь не запустит кнопку? Вот мой код. Заранее спасибо.Сочетание функции Next and Forward как одной кнопки в android eclipse

 btnNext.setOnLongClickListener(new OnLongClickListener() { 

     @Override 
     public boolean onLongClick(View arg0) { 
      // get current song position 
      int currentPosition = mp.getCurrentPosition(); 

      // check if seekForward time is lesser than song duration 
      if (currentPosition + seekForwardTime <= mp.getDuration()) { 
       // forward song 
       mp.seekTo(currentPosition + seekForwardTime + LONG_CLICK_LISTERNER_INTERVAL); 
      } else { 
       // forward to end position 
       mp.seekTo(mp.getDuration()); 
      } 
      return true; 

     } 
    }); 

ответ

0

Посмотреть этот пост моего Events for Long click down and long click up in Android

Если вы хотите, чтобы обнаружить событие прикосновения, которая называется MotionEvent в Android, вы должны переопределить метод onTouchEvent (MotionEvent е) и использовать класс GestureDetector для идентификации длительного нажатия ,

private GestureDetector mGestureDetector; 

public FfwRewButton(...) { 
    //.... 
    mGestureDetector = new GestureDetector(context, 
     new GestureDetector.SimpleOnGestureListener() { 
      public boolean onDown(MotionEvent e) { 
       mLongClicked = false; 
       return true; 
      } 
      public void onLongPress(MotionEvent e) { 
       mLongClicked = true; 
       // long press down detected 
      } 
    }); 
} 

public boolean onTouchEvent(MotionEvent e) { 
    mGestureDetector.onTouchEvent(e); 
    if (mLongClicked && e.getAction() == ACTION_UP) { 
      // long press up detected 
     } 
    } 
} 

на долгое нажатие вниз, вы можете начать нить делать то же самое в цикле и остановки на длительное нажатие вверх, надеюсь, это поможет вам