Как обнаружить отпускание кнопки после длительного нажатия? - PullRequest
0 голосов
/ 30 марта 2020

Хотели сделать кнопку выпуска, внедрили onLongClick() и onClick() Слушатели, они работают нормально, но как определить Выпуск . На самом деле хотел создать кнопку, похожую на кнопку записи звука WhatsApp , где, если короткое нажатие или касание ничего не делает, при удержании в течение длительного времени начинается запись звука и после отпускания останавливается запись.

Слушатели

            @Override
            public void onClick(View v) {
                shortClick();
            }
        });

       btn.setOnLongClickListener(new View.OnLongClickListener() {
           @Override
           public boolean onLongClick(View v) {
               longClick();
               return true;
           }
       });

Функции

 public void shortClick()
    {
        Toast.makeText(this, "Short click Cancel !!!", Toast.LENGTH_SHORT).show();

    }

    public void longClick()
    {
        Toast.makeText(this, "Long click started - Recording started !!!", Toast.LENGTH_SHORT).show();

    }

Итак, нужна функция для освобождения.

1 Ответ

0 голосов
/ 30 марта 2020

вот рабочий код

@Override
public boolean dispatchKeyEvent(KeyEvent KEvent) 
{
    int keyaction = KEvent.getAction();

    if(keyaction == KeyEvent.ACTION_DOWN)
    {
        int keycode = KEvent.getKeyCode();
        int keyunicode = KEvent.getUnicodeChar(KEvent.getMetaState() );
        char character = (char) keyunicode;

        System.out.println("DEBUG MESSAGE KEY=" + character + " KEYCODE=" +  keycode);
    }


    return super.dispatchKeyEvent(KEvent);
}
...