Как написать свою клавиатуру для Android
Здравствуйте. В данной статье я постараюсь рассказать и показать основные моменты написания собственной клавиатуры для Android’а. Статья предназначена для разработчиков, которые с этим не сталкивались, но имеют опыт знакомства с Android’ом.
Сразу оговорюсь, что мнение и код автора не являются истинной в последней инстанции, а ваши предложения и критика лишь приветствуются. И если не охота все читать, ссылка на исходники в конце статьи.
Базовый layout-файл, keyboard.xml
Содержит в себе View класс Android’а под названием KeyboardView и описывает внешний вид клавиатуры.
Важный момент, атрибут background является обязательным, если его не указать, то при каждом нажатии клавиши ваша клавиатура будет падать.
Все атрибуты описывать не будем, лишь «не очевидные».
InputMethodService — сервис клавиатуры
Теперь, после того как мы создали все необходимые xml файлы, приступаем к описанию сервиса, который будет слушать события InputMethod.
Для этого создадим сервис, наследуясь от InputMethodService и сразу реализуем интерфейс KeyboardView.OnKeyboardActionListener. В итоге у вас получиться набор методов, которые вы можете переопределить и наполнить необходимой функциональностью, которые позволяют широко кастомизировать вашу клавиатуру. Но здесь я приведу лишь примеры базовых моментов.
Одним из методов жизненного цикла InputMethodService является onCreateInputView внутри которого мы создаем View клавиатуры и привязываем к ней необходимые листенеры.
Событие onKey срабатывает между onPress и onRelease, на вход им подается код нажатой клавиши.
Итак, все готово… почти, осталось добавить наш сервис в манифест.
Поздравляю, вы написали свою первую клавиатуру!