2014-12-17 2 views
5

Как определить состояние нажатых, нажатых и выпущенных кнопок кнопки. Я хочу выполнять разные функции в этих состояниях. На клик я хочу вызвать функцию1, нажимаю, я хочу вызвать функцию2, а при приеме я хочу вызвать функцию3.Нажмите, нажмите и отпустите событие на кнопке

Мы можем обнаружить состояние щелчка, используя View.OnClickListener. Мы можем обнаружить состояние нажатия и отпускания кнопки с помощью View.OnTouchListener и обработки ACTION_DOWN и ACTION_UP. Однако я могу обнаруживать эти состояния индивидуально, но не вместе.

Ниже приведен код для OnCLickListener.

button.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      System.out.println(" clicked "); 
     } 
    }); 

Ниже приведен код для OnTouchListener.

button.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      switch(event.getAction()) { 
       case MotionEvent.ACTION_DOWN: 
        System.out.println(" pressed "); 
        return true; 
       case MotionEvent.ACTION_UP: 
        System.out.println(" released "); 
        return true; 
      } 
      return false; 
     } 
    }); 

Когда я нажимаю кнопку и прикасаюсь к слушателям на кнопке, событие Click никогда не вызывается. Вместо этого я получаю нажатое и освобожденное состояние.

Как я могу обрабатывать эти три состояния вместе?

EDIT:

Я добавил код OnClickListener и OnTouchListener я использовал.

+0

Try возвращение ложным, а не истинным; – TheRedFox

ответ

6

Easy поскольку Button является View:

button.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      if (event.getAction() == MotionEvent.ACTION_DOWN) { 
       // Pressed 
      } else if (event.getAction() == MotionEvent.ACTION_UP) { 
       // Released 
      } 
      return true; 
     } 
    }); 
+0

Как насчет события onclick? Я уже объяснил в своем вопросе, что я могу обрабатывать состояние печати и выпуска отдельно, но не с кликом. –

+0

Что значит? Для клика есть еще один прослушиватель – TheRedFox

+0

. Я знаю, что для клика есть OnClickListener. Когда я устанавливаю оба слушателя (OnClick и OnTouch) на кнопку, тогда даже если я нажму на кнопку OnCLick, никогда не будет вызван. Вместо этого вызывается нажатие. –

-1

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

0

Смотрите эту link. Вы можете обрабатывать вручную нажмите в MotionEvent.ACTION_UP случае с помощью

button.performClick(); 
10

Измените return true; внутри case MotionEvent.ACTION_DOWN: и case MotionEvent.ACTION_UP: к return false; или break;

+0

Это сработало для меня. благодаря –

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