public boolean onKeyUp(int keyCode, KeyEvent event);
или зарегистрировать слушателя типа View.OnKeyEventListener и определить метод
boolean onKey(View v, int keyCode, KeyEvent event);
Как и в случае с событиями касания экрана, свойство action объекта KeyEvent позволяет определить тип события:
• KeyEvent.ACTION DOWN — нажатие клавиши;
• KeyEvent.ACTION UP — её отпускание;
• KeyEvent.ACTION MULTIPLE — автоповтор.
Параметр keyCode содержит код нажатой клавиши. Например, значение KeyEvent.KEYCODE DPAD LEFT соответствует кнопке «влево» джойстика телефона, а значение KeyEvent.KEYCODE MENU — кнопке «Menu». Остальные значения кодов можно найти в документации. Отметим, что события от клавиатуры передаются только тому виджету, который в настоящий момент имеет фокус ввода. В число таких виджетов входит, например, компонент EditText и не входит компонент TextView. Для того чтобы пользовательский компонент мог принимать фокус ввода, необходимо установить его свойство focusable равным true.
Правила обработки событий вдоль иерархии виджетов
Любой виджет может содержать другие виджеты внутри той области, за которую он ответствен. Иерархия включения может быть сформирована непосредственно в программном коде или путём вложения элементов в XML-файле, описывающем пользовательский интерфейс (см. п. 3.3). Как правило, на практике используется второй способ.
Действуют специальные правила, определяющие обработку событий вдоль иерархии:
• в первую очередь событие передаётся наиболее вложенному (листовому в дереве вложения) виджету, ответственному за область, в которой произошло событие;
• если виджет не определяет собственного обработчика для произошедшего события, оно передаётся для обработки родительскому в терминах иерархии включения виджету; иначе вызывается обработчик дочернего виджета;
• если обработчик события возвращает true, то считается, что виджет обработал событие, и дальнейшая обработка не требуется;
• если обработчик возвращает false, то виджет обработал событие, но требуется также продолжить обработку этого события родительским виджетом.