2013-11-27 2 views
0

Привет и спасибо за вашу помощь.Как выполнить действие до тех пор, пока кнопка удерживается нажатой

мне нужна кнопка, чтобы выполнить следующее поведение:

  • при нажатии кнопки начинается действие (в данном случае вид прокручивается)

  • до тех пор, пока кнопка нажата действие продолжается (вид продолжает прокрутку)

  • Когда кнопка отпускается, действие (прокрутка) останавливается.

Я попытался это, но не работает:

Button left = (Button) findViewById(R.id.left); 


    left.setOnTouchListener(new OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      Log.e("","left"); 
      return false; 
     } 
    }); 

ответ

3
Button button = (Button) findViewById(R.id.button); 
button.setOnTouchListener(new View.OnTouchListener() { 

@Override public boolean onTouch(View v, MotionEvent event) { 
    switch(event.getAction()) { 
    case MotionEvent.ACTION_DOWN: 
//Start your work 
     break; 
    case MotionEvent.ACTION_UP: 
// stop the work 
     break; 
    case MotionEvent.ACTION_CANCEL: 
// stop the work 
     break; 
    } 
    return false; 
} 



}); 
+0

Благодаря этим работает. Однако я изо всех сил стараюсь также нажать на кнопку, любую идею, что делать? – Ishaan

5

Я думаю, что вы ищете сочетание OnTouchListener и MotionEvent.ACTION_DOWN

Edit:

switch (event.getAction()) { 
      case MotionEvent.ACTION_DOWN: 
       // TODO start scroll 
       break; 
      case MotionEvent.ACTION_UP: 
       // TODO stop scroll 
       break; 
      default: 
       break; 
      } 
      return false; 

Надеюсь, это поможет .. :)

1

По умолчанию вы можете использовать onlongclick слушателя, но в вашем случае это не даст эффекта, его максимальное время 1-2 сек, поэтому применять событие движения на кнопку и применить логику ..

1

Вы можете использовать MotionEvent.ACTION_DOWN и MotionEvent.ACTION_UP для обнаружения действия вверх и вниз

@Override 
    public boolean onTouchEvent(MotionEvent event) { 
     switch (event.getAction()) { 
     case MotionEvent.ACTION_DOWN: 
      //start action 
      break; 

     case MotionEvent.ACTION_UP: 
      //stop action 
      break; 
     } 
     return super.onTouchEvent(event); 
    } 
1

сделать новый выделите зрения

ScrollView sv=new ScrollView(this); 

и когда вы нажимаете/начинаете кнопку. затем запустите поток, который увеличивает значение int и прокручивается, а при нажатии клавиши - вниз. остановить нить.

//start thread which incrment value one by one 
sv.scrollBy(x, y); //x the amount of pixels to scroll by horizontally 
      //y the amount of pixels to scroll by vertically 
+0

Это работает ......... – Jone

5

Использование MotionEvent.ACTION_DOWN и MotionEvent.ACTION_UP для обнаружения действия вверх, так и вниз

@Override 
    public boolean onTouchEvent(MotionEvent event) { 
     switch (event.getAction()) { 
     case MotionEvent.ACTION_DOWN: 
      //start action here 
      break; 


     } 
     return super.onTouchEvent(event); 
    } 
Смежные вопросы