KeyboardView — создаём свою клавиатуру

Когда мы хотим ввести какие-то данные в текстовые поля, то обычно используем клавиатуры, которые установлены в системе. По сути, клавиатура — это обычное приложение в формате APK. Как правило, в системе уже установлена системная клавиатура, также может стоять клавиатура от производителя аппарата, и можно загрузить отдельную клавиатуру с Google Play.

В большинстве случаев установленных клавиатур достаточно для ввода текста и чисел. Они обладают определённой гибкостью и могут подстраиваться под конкретное текстовое поле, выводя клавиши с цифрами, если нужно набрать телефонный номер и т.д.

Тем не менее, может возникнуть такая ситуация, когда понадобится свой вид клавиатуры. Допустим, мы хотим иметь клавиатуру для ввода шестнадцатиричных чисел с клавишами от 0-9 и A, B, C, D, F. Значит нам придётся разработать собственную клавиатуру.

Стоит отметить, что стандартные клавиатуры работают как сервисы и доступны для всех приложений. Мы же напишем упрощённый вид клавиатуры, который будет работать только в пределах нашей активности. Не стоит думать, что это половинчатое решение. Для нашей шестнадцатиричной клавиатуры данный подход является оптимальным. Во-первых, не всем нужна такая клавиатура и устанавливать лишний APK-файл пользователь не захочет. Во-вторых, текстовые поля не имеют атрибута для распознавания шестнадцатиричных чисел и мы не сможем автоматически выводить клавиатуру. Поэтому, вполне логично внедрить нужную клавиатуру там, где она нужна.

Вы вошли на сайт, как гость.
Необходимо зарегистрироваться, чтобы прочитать статью

Источник



Создание пользовательской клавиатуры на Android

Final product imageWhat You’ll Be Creating

Большинство устройств Android не имеют клавиатуры. Вместо этого они полагаются на виртуальную или экранную клавиатуру для ввода текста. Если вы используете персонализацию Android, то знание о создании пользовательской, приятной клавиатуры может вывести ваше хобби на совершенно новый уровень.

Используя Android SDK, вы можете быстро создать экранную клавиатуру с удивительно небольшим количеством строк кода, поскольку SDK выполняет множество задач простого уровня, таких как распознавание касаний клавиш, рисование клавиатуры и установление соединений между клавиатурой и поля ввода.

В этом уроке вы узнаете, как создать полноценную функциональную клавиатуру, которая может служить для вас на вашем устройстве Android по умолчанию.

1. Предпосылки

Вам понадобится комплект Eclipse ADT Bundle. Вы можете загрузить его с веб-сайта разработчика Android.

2. Создать новый проект

Запустите программу Eclipse и создайте новое приложение для Android. Назовите это приложение SimpleKeyboard. Убедитесь, что вы выбрали уникальное имя пакета. Установите минимально необходимый SDK на значение Android 2.2 и установите целевой SDK на значение Android 4.4

Это приложение не будет иметь никаких действий, поэтому снимите флажок с Создать мероприятие и нажмите Готово.

3. Отредактируйте манифест

Экранная клавиатура рассматривается как Input Method Editor (IME) для операционной системы Android. IME объявляется как Service в AndroidManifest.xml, который использует разрешение BIND_INPUT_METHOD и отвечает за android.view.InputMethod .

Добавьте следующие строки в тег application файла манифеста:

4. Создайте метод.

Тег service в файле манифеста содержит meta-data , который ссылается на файл XML с именем method.xml. Без этого файла операционная система Android не признает наш Service в качестве действительной IME-службы. Файл содержит сведения о методе ввода и его подтипах. Для перевода нашей клавиатуры на другой язык мы выбираем один подтип en_US. Создайте каталог res/xml, если его нет, и добавьте к нему файл method.xml. Содержимое файла должно быть следующим:

5. Редактирование строк.xml

Строки, используемые этим приложением, определены в файле theres/values/strings.xml. Нам понадобятся следующие три строки:

  • имя приложения
  • ярлык IME
  • ярлык подтипа IME

Обновите файл strings.xml, чтобы он имел следующее содержимое:

6. Определите макет клавиатуры

Макет нашей клавиатуры содержит только KeyboardView . Атрибут layout_alignParentBottom имеет значение true , чтобы клавиатура отображалась в нижней части экрана.

Создайте файл с именем res/layout/keyboard.xml и замените его содержимое следующим текстом:

KeyPreviewLayout — это макет недолговечного всплывающего окна, которое появляется при каждом нажатии клавиши на клавиатуре. Он содержит единственный TextView . Создайте файл res/layout/preview.xml и добавьте к нему следующее:

6. Определите клавиши клавиатуры

Детали клавиш клавиатуры и их позиции указаны в файле XML. Каждый ключ имеет следующие атрибуты:

  • keyLabel : этот атрибут содержит текст, отображаемый на клавише.
  • codes : Этот атрибут содержит значения unicode символов, которые представляет ключ.

Например, чтобы определить ключ для буквы A, атрибут codes должен иметь значение 97, а атрибут keyLabel должен быть установлен в A.

Если с ключом связано несколько кодов, тогда символ, который представляет собой ключ, будет зависеть от количества нажатий, которые получает ключ. Например, если ключ имеет коды 63, 33 и 58:

  • одно нажатие на клавишу приводит к символу «?»
  • два быстрых нажатия приводят к символу «!»
  • три отображают символ «:»

Ключ может также иметь несколько необязательных атрибутов:

  • keyEdgeFlags : этот атрибут может принимать значение left или right . Этот атрибут обычно добавляется к крайним левым и правым клавишам в строке.
  • keyWidth : этот атрибут определяет ширину клавиши. Обычно это определяется в виде процентного значения.
  • isRepeatable : если для этого атрибута установлено значение true , длительное нажатие клавиши будет повторять действие клавиши несколько раз. Обычно значение true установлено для клавиш удаления и пробела.

Клавиши клавиатуры сгруппированы в виде строк. Рекомендуется ограничить количество клавиш в строке до десяти, причем каждая клавиша имеет ширину, равную 10% от клавиатуры. В этом уроке высота клавиш установлена в 60dp. Это значение можно отрегулировать, но значения менее 48dp не рекомендуются. У нашей клавиатуры будет пять рядов ключей.

Теперь мы можем идти вперед и разрабатывать клавиатуру. Создайте новый файл с именем res/xml/qwerty.xml и замените его содержимое следующим текстом:

Возможно, вы заметили, что некоторые ключи имеют отрицательные значения в атрибуте codes . Отрицательные значения равны предопределенным константам для класса Keyboard . Например, значение -5 равно значению Keyboard.KEYCODE_DELETE .

7. Создание класса Service

Создайте новый класс Java и назовите его SimpleIME.java. InputMethodService и реализовать интерфейс OnKeyboardActionListener . Интерфейс OnKeyboardActionListener содержит методы, вызываемые при касании или нажатии клавиш экранной клавиатуры.

Класс SimpleIME должен иметь три переменные-члена:

  • KeyboardView , ссылающийся на представление, определенное в макете
  • Экземпляр Keyboard , который назначен для KeyboardView
  • boolean , сообщает нам включен ли caps lock

После объявления этих переменных и добавления методов интерфейса OnKeyboardActionListener класс SimpleIME должен выглядеть следующим образом:

Когда клавиатура создана, вызывается метод onCreateInputViewmethod . Здесь могут быть инициализированы все переменные Service . Обновите реализацию метода onCreateInputView , как показано ниже:

Похожее:  483275 25 Клавиатура для ноутбука HP Pavilion dv7 1000 dv7 1165er dv7 1169er dv7 1173er dv7 1175er dv7 11

Затем мы создаем метод, который воспроизводит звук при нажатии клавиши. Мы используем класс AudioManager для воспроизведения звука. Android SDK включает в себя несколько стандартных звуковых эффектов по умолчанию для нажатия клавиш, и они используются в методе playClick .

Наконец, обновите метод onKey , чтобы наше приложение могло взаимодействовать с полями ввода (как правило, EditText ) других приложений.

Метод getCurrentInputConnection используется для получения соединения с полем ввода другого приложения. После подключения мы можем использовать следующие методы:

  • commitText для добавления одного или нескольких символов в поле ввода
  • deleteSurroundingText для удаления одного или нескольких символов поля ввода
  • sendKeyEvent для отправки событий, таких как KEYCODE_ENTER , во внешнее приложение

Всякий раз, когда пользователь нажимает клавишу на клавиатуре, onKey вызывается с использованием значения unicode ключа в качестве одного из его параметров. Основываясь на этом значении, клавиатура выполняет одно из следующих действий:

  • В случае, если код следующий — KEYCODE_DELETE , то один символ слева от курсора удаляется с помощью метода deleteSurroundingText .
  • В случае, Если код — KEYCODE_DONE , событие ключа KEYCODE_ENTER запускается.
  • В случае, Если код — KEYCODE_SHIFT , значение caps изменяется, а состояние нажатия клавиатуры обновляется с помощью метода setShifted . При изменении состояния нажатия клавиши должны быть перерисованы, чтобы надписи клавиш были обновлены. InvalidateAllKeys используется для перерисовки всех ключей.
  • Для всех других кодов код просто преобразуется в символ и отправляется в поле ввода. Если код представляет букву алфавита, а переменная caps имеет значение true , то символ преобразуется в верхний регистр.

Обновите метод onKey , чтобы он выглядел так:

8. Тестирование клавиатуры

Итак, экранная клавиатура готова к тестированию. Скомпилируйте и запустите её на устройстве Android. Это приложение не имеет Activity , что означает, что оно не появится в панели запуска. Чтобы использовать её, его следует сначала активировать в настройках устройства.

После активации Simple IME откройте любое приложение, которое позволяет вводить текст (например, любое приложение для обмена сообщениями) и понажимайте по одному из его полей ввода. Вы должны увидеть значок клавиатуры в области уведомлений. В зависимости от вашего устройства вы можете щелкнуть по этому значку или перетащить панель уведомлений вниз и выбрать Simple IME в качестве метода ввода. Теперь вы можете использовать новую клавиатуру.

Источник

Как установить, поменять и настроить клавиатуру на Андроид телефоне

установить клавиатуру на Android

Одним из основных устройств ввода на смартфонах является клавиатура. Она встроена в оболочку операционной системы и может быть изменена самим пользователям. Разберемся, как изменить клавиатуру на Андроид и настроить ее.

Изменение настроек стандартной клавиатуры на Android

установить клавиатуру на Android

Во всех телефонах установлена стандартная клавиатура, которая входит в оболочку операционной системы. Многих она не устраивает из-за отдельных опций, например, автоматического ввода слов Т9 или неподходящего языка. Если вы неопытный пользователь, то лучше не менять встроенную утилиту. Настройка клавиатуры Андроид проводится по единому принципу:

  1. Все опции собраны в разделе общих настроек телефона. Зайдите в меню, где собраны все приложения и нажмите на иконку в виде шестеренки. Обратите внимание, что в современных смартфонах существует два варианта опций. Простые настройки и Google , вам нужно запускать обычную утилиту, так как именно она будет управлять встроенным опциями девайса.
  2. В списке доступных настроек найдите пункт «Язык и ввод».
  3. Из списка разделов выберите «Клавиатура и способы ввода». В этой части вам и нужно будет менять параметры.

Для начала разберемся, как переключить язык на клавиатуре Андроид. По умолчанию в стандартной клавиатуре есть специальные кнопки для переключения языка, изменения способа ввода. Если их нет, то для настройки необходимо зайти в панель «Языки ввода».

В зависимости от прошивки вашего телефона в языковой панели будет от 3 до 300 вариантов на выбор. Выберите текущий язык, нажмите на него и спуститесь на строку «Добавить язык». Установите дополнительное значение. Теперь вам достаточно будет просто нажать на знак земного шара, чтобы переключить язык. В этом же разделе вами может быть активирована или отключена голосовая клавиатура на Андроид.

Также при помощи опций клавиатуры вы можете изменить режим использования предугадывания слов и автоматической пунктуации. Если вы не будете пользоваться этими возможностями, смартфон не будет исправлять слова и по двойному пробелу ставить знаки препинания. Для неопытных пользователей смартфонов эти опции часто неудобны.

Удаляем вибрацию на клавиатуре

установить клавиатуру на Android

Отклики на касания к стандартной клавиатуре по умолчанию включены. Поэтому у многих пользователей возникает проблема, как убрать вибрацию на клавиатуре Андроид. Она разряжает батарею и может раздражать пользователя. Для этого снова зайдите в настройки смартфона и сделайте следующие действия:

  • откройте используемую по умолчанию клавиатуру;
  • пролистайте список опций ее вниз;
  • выберите пункт «Звуки при вводе»;
  • в нем вы можете убрать звуки нажатия клавиш удалить маркер рядом с пунктом «Виброотклик».

Если у вас настроена вибрация клавиатуры на Андроид – включить и выключить ее очень просто. Отклик может настраиваться путем установки маркеров и с помощью активации переключателя в виде небольшого рычажка. Если вы используете нестандартное приложение, то аналогично убрать вибрацию можно при помощи настроек – они вызываются прямо из поля для ввода текста. Для этого там предусмотрена пиктограмма сверху в виде шестеренки.

Что делать, если клавиатура в Android телефоне пропала?

На Андроид убрать клавиатуру с экрана просто: достаточно нажать кнопку «Назад» или использовать стрелку вниз в верхней части поля для ввода текста. Но в некоторых случаях после этого действия вы не можете не открыть ее снова. Это случается из-за сбоев приложения, которое обеспечивает ввод. Если вы столкнулись с ситуацией, когда пропала клавиатура на Андроид, что делать в такой ситуации решать нужно сразу. Без клавиатуры вы не сможете общаться и вводить данные в приложениях. Действовать нужно по следующей инструкции:

  1. Зайдите в настройки телефона.
  2. Выберите раздел «Приложения».
  3. Откройте вкладку «Все» и найдите утилиту, отвечающую за клавиатуру.
  4. Нажмите на название приложения. Выберите пункт «Очистить кэш».
  5. Перезагрузите телефон.

Следующий способ подойдет и для тех, кто решает проблему, как отключить клавиатуру на Андроид. Выбор способа ввода происходит также через раздел настроек. Вам необходимо открыть панель способов введения текста, а затем поставить маркер напротив стандартной клавиатуры. Если вы скачали специальное приложение для замены стандартной утилиты, то необходимо убрать маркер с клавиатуры Android , а установить галочку на ваш вариант.

Похожее:  Обзор игры Brothers A Tale of Two Sons страшная притча о братской преданности
Как установить на смартфон новую клавиатуру?

Если вас не устраивает дизайном или своим функционалом стандартная QWERTY -клавиатура, то вы можете загрузить приложение, которое ее заменит. Некоторые производители смартфонов включили специальные утилиты в оболочку операционной системы. Например, у девайсов Asus предустановлена клавиатура Zen . Это фирменное приложение, которое невозможно удалить. Если ваш производитель смартфона не озаботился установкой удобной клавиатуры, вы можете сделать это самостоятельно.

Решить проблему, как установить другую клавиатуру на Андроид, можно действуя по инструкции:

  1. Зайдите в Google Play Market.
  2. Найдите нужное приложение. Достаточно просто в поисковой строке написать «Клавиатура», и перед вами появится список с десятками результатов.
  3. При помощи кнопки «Установить», загрузите и инсталлируйте приложение.
  4. Запустите приложение из меню, где отражены все программы.
  5. Настройте работу клавиатуры через появившееся окно приложения. Чаще всего настройки просты – нужно лишь дать приложению разрешения, поставить или удалить виброотклик, выбрать язык и дополнительные инструменты.

При помощи сторонних приложений можно решить вопрос, как установить смайлики на Андроид-клавиатуре, а также изменить внешний вид наборной панели. Стандартная утилита не дает возможности менять внешний вид и цвет кнопок, тогда как приложения от сторонних разработчиков помогают решить проблему невзрачного оформления.

Примеры приложений для замены стандартной клавиатуры

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

SwiftKey Keyboard

Этот вариант хорош для тех, кто использует автоматический ввод. Для настройки программы вам нужно будет синхронизировать ее с аккаунтами Facebook , SMS , Gmail , Twitter . Клавиатура просканирует ваши переписки и самостоятельно пополнит словарь. Особенностью приложения является размещение клавиши Enter справа и снизу, если удержать на ней палец, то появится меню смайлов.

В программу включен уникальный набор тем, возможность корректировки вибрации и звуковых настроек. Среди недостатков этой клавиатуры – недостаточное количество настроек и непривычное расположение элементов. Например, если вы удержите палец на клавише «S», то включится функция голосового набора.

Fleksy

Еще одна клавиатура, поразительно отличающаяся от стандартной. Тут в меню ввода можно добавлять не только уникальные смайлики, но и GIF -картинки. Базовые темы не включают в себя большое количество дополнительных элементов. В отличие от SwiftKey, эта клавиатура полностью платная и за уникальные настройки во Fleksy придется потратить дополнительную сумму. Это отпугивает многих пользователей.

Достоинством клавиатуры является возможность управления жестами. Введение текста методом свайп при этом не поддерживается. Если вас заинтересовала эта клавиатура, то можно использовать ее пробный период – 30 дней. После чего можно выкупить приложение.

TouchPal

Эта клавиатура является самой стильной из представленных – к ней выпущено множество тем, но многие из них платные. Она отличается широким функционалом и корректной работой всех функций. Настройки клавиатуры работают для русского и английского языков.

Еще одно достоинство программы – возможность синхронизации словаря. Подключите TouchPal на всех устройствах и словарь будет регулярно пополняться. Также эта утилита поддерживает введение смайликов и эмодзи.

Теперь вы знаете, как переключить клавиатуру на Андроид, а также настроить ее и поменять. Если у вас остались вопросы, задавайте их в комментариях. Делитесь полученной информацией с друзьями, обсуждайте ее вместе с нами.

Источник

Как написать свою клавиатуру для Android

Как написать свою клавиатуру для Android

2017-02-17 в 11:13, admin , рубрики: android, android development, keyboard, noob, tutorial, Разработка под android

Здравствуйте. В данной статье я постараюсь рассказать и показать основные моменты написания собственной клавиатуры для Android’а. Статья предназначена для разработчиков, которые с этим не сталкивались, но имеют опыт знакомства с Android’ом.

Сразу оговорюсь, что мнение и код автора не являются истинной в последней инстанции, а ваши предложения и критика лишь приветствуются. И если не охота все читать, ссылка на исходники в конце статьи.

Для начала необходимо создать пустой Android проект без Activity. После этого приступим к подготовке .xml файлов, которые будут описывать Android’у нашу клавиатуру.

Базовый layout-файл, keyboard.xml

Содержит в себе View класс Android’а под названием KeyboardView и описывает внешний вид клавиатуры.

  • android: keyPreviewHeight — задает высоту элемента подсказки, на котором отображается текущая нажатая клавиша.
  • android:keyPreviewLayout — указываем layout-файл, который описывает внешний вид preview’шки.

Код preview:

Важный момент, атрибут background является обязательным, если его не указать, то при каждом нажатии клавиши ваша клавиатура будет падать.

Описание раскладки

Итак, мы подготовили 2 .xml файла, которые описывают внешний вид, теперь настал черед описать саму раскладку клавиатуры. Назовем этот файл keys_definition_ru.xml и находится он будет в xml ресурсах проекта. Здесь будет представлен лишь его кусок, так как файл достаточно большой.

Все атрибуты описывать не будем, лишь «не очевидные».

  • android:horizontalGap — горизонтальный отступ между клавишами
  • android: verticalGap — вертикальный отступ
  • android:codes — код нужного символа в html utf-8 (и не только utf-8, подробнее в оф. документации)
  • android:keyEdgeFlags — атрибут может применять значение left или right. Эти атрибуты добавляются клавишам, которые расположены в самом левом крае или самом правом крае клавиатуры
  • android:isRepeatable — повторять действие клавиши при долгом нажатии (обычно используется на пробеле или backspace)

Заключительный файл — описание локализаций (подтипов инпута):

InputMethodService — сервис клавиатуры

Теперь, после того как мы создали все необходимые xml файлы, приступаем к описанию сервиса, который будет слушать события InputMethod.

Для этого создадим сервис, наследуясь от InputMethodService и сразу реализуем интерфейс KeyboardView.OnKeyboardActionListener. В итоге у вас получиться набор методов, которые вы можете переопределить и наполнить необходимой функциональностью, которые позволяют широко кастомизировать вашу клавиатуру. Но здесь я приведу лишь примеры базовых моментов.

Одним из методов жизненного цикла InputMethodService является onCreateInputView внутри которого мы создаем View клавиатуры и привязываем к ней необходимые листенеры.

Событие onKey срабатывает между onPress и onRelease, на вход им подается код нажатой клавиши.

Источник

Как создать клавиатуру для android

Сегодня мы научимся делать не что то там, а самую настоящую клавиатуру со всем стандартным набором возможностей, которую при желании вы сможете даже использовать на своем Android устройстве вместо стандартной (ну представьте себе — печатать смс-ки на собственной клавиатуре, что может быть лучше:)). Если вы думаете, что урок будет очень сложным — то вы правы вы ошибаетесь. Оказывается, что в стандартном функционале Android SDK Manager есть абсолютно все необходимое для создания полноценной клавиатуры без лишних страданий. Нам не нужно будет ни вырисовывать внешний вид клавиш, ни настраивать распознавание нажатий клавиш, ни мучиться с привязыванием нашей будущей клавиатуры к полям ввода. Все это уже по умолчанию есть в SDK Manager, нам только осталось научиться этим воспользоваться!

Похожее:  Функция int используется для ввода чисел с клавиатуры

Начнем. Создаем новый проект, я назвал его Keyboard (как мы неоднократно договаривались — все названия на ваше усмотрение, только лишь бы вы сами в них не путались). На том шаге, когда нам предлагается создать какую либо Activity, выбираем Add No Activity и жмем финиш.

Перво наперво, что нам нужно сделать это получить для нашего приложения разрешение ему быть клавиатурой:). Мы хотим создать свое устройство ввода, что называется Input Method Editor (IME), оно определяется в файле манифеста как Service, использующий разрешение BIND_INPUT_METHOD и соответствует действию android.view.InputMethod. Идем в файл манифеста AndroidManifest.xml и добавляем в тег <application> следующее:

Видим красные подчеркивания (нам не привыкать), не волнуемся.

Тег Service содержит тег <meta-data>, который ссылается на несуществующий пока файл method.xml. без этого файла ОС Android не признает нашу клавиатуру как корректный метол ввода, который можно использовать. Этот файл должен содержать подробности о методе ввода и его подтипах. Для нашей клавиатуры определим всего один подтип для en_US локализации (не будем пока экспериментировать с русским, нам главное понять принцип). Создаем в приложении res/layout папку и создаем в ней нужный нам файл method.xml. Вносим в файл res/layout/mehod.xml следующее:

Теперь давайте отредактируем файл строковых ресурсов res/values/strings.xml. Нам нужно добавить сюда строки для:

— название для IME;

— название для подтипа IME;

Имя приложения у нас уже есть, остается только добавить две нужные строчки. Отредактированный файл strings.xml выглядит так:

Теперь нужно определить внешний вид клавиатуры. Файл layout для нашей клавиатуры будет содержать только один объект — KeyboardView. Для того, чтобы наша клавиатура появлялась в низу экрана, настроим атрибут layout_alignParentBottom со значением true. Создаем файл res/layout/keyboard.xml следующее:

Строка keyPreviewLayout отвечает за то, как будет выглядеть нажатая клавиша на нашей клавиатуре. Как видите, за ее вид будет отвечать файл preview, который мы и создадим. Создаем файл res/layout/preview.xml и добавим в него следующее содержимое:

Теперь нужно определить клавиши клавиатуры. Подробное описание клавиш и их расположение описывается в специальном .xml файле. Каждая клавиша имеет следующие атрибуты:
keyLabel — название клавиши, которое будет отображаться на клавише;

codes — этот атрибут содержит уникальный код, который характеризует нажатую клавишу.

Каждая клавиша, будь то цифра, буква, какой — либо знач имеют свой собственный уникальный код. Например, буква А имеет значение codes — 97, соответственно keyLabel нужно придать значение "А". Одной клавише можно задать несколько значений в атрибут codes, то клавиша будет принимать определенное значение из этих троих а зависимости от того, сколько раз мы нажали на клавишу (вспомните клавиатурный набор на старых мобильных — на одной клавише "а,б,в,г" и т.д.). Например, если мы зададим кнопке коды 63,33 и 58 то при одном нажатии получим символ "?", при двух нажатиях в короткой последовательности получим "!", а при троих нажатиях — двоеточие ":".

Клавиша может иметь еще несколько атрибутов:

keyEdgeFlags — атрибут может применять значение left или right. Эти атрибуты добавляются клавишам, которые расположены в самом левом или самом правом положении, соответственно;

keyWidth — определяет ширину клавиши. Как правило задается в процентах;

isRepeatable — если этот атрибут имеет значение true, то долгое нажатие на клавишу будет повторять ее действие несколько раз (например "аааааа"), как правило эту опцию включают для клавиш удаления, пробела и т.п.

Клавиши в клавиатуре сгруппированы в колонки. Довольно практично делать по 10 клавиш в колонке и каждой клавише отдавать 10% ширины от общей ширины клавиатуры. Мы выставим высоту клавиш равную 60dp. Можно ее изменять, но не рекомендуется делать высоту меньше 48dp. У нас будет 5 столбцов клавиш.

Переходим от теории к действию. Создаем файл res/layout/qwerty.xml. Файл должен содержать следующий код:

Некоторые клавиши могут иметь отрицательное значение атрибута codes, они эквиваленты встроенным константам в класс Keyboard. Например, значение -5 соответствует значению Keyboard.KEYCODE_DELETE.

Теперь создадим новый Java класс и назовем его IME.java. Он должен наследовать класс InputMethodService и выполнять интерфейс OnKeyboardActionListener. Этот интерфейс содержит методы, которые вызываются при нажатии на клавиши.

Класс IME должен иметь 3 типа переменных:

KeyboardView — ссылающийся на вид, определенный в layout файле;

Keyboard — применяет то, что было назначено в KeyboardView;

boolean — сообщает о включенном caps lock-е.

Если проделать все сказанное, наш файл IME.java приобретает вид:

Когда клавиатура создана, вызывается метод onCreateInputView. Все переменные тега Service можно инициализировать прямо здесь в методе. Добавьте метод onCreateInputView:

Теперь нужно настроить проигрывание звука при нажатии на клавиши. Используем для этого класс AudioManager. Используем стандартные звуки в методе PlayClick. Код блока настройки звука:

Теперь нам нужно настроить метод onKey для того, чтобы заставить нашу клавиатуру работать с полями ввода (как правило EditText) других приложений. Для этого используется метод getCurrenrInputConection. Здесь нужно настроить следующее:

commitText — для добавления одного или больше символов в поле ввода;

deleteSurroundingText — для удаления одного или более символов в поле ввода;

sendKeyEvent — отослать событие, типа KEYCODE_ENTER, во внешнее приложение (любое где мы будем использовать нашу клавиатуру).

Каждый раз когда пользователь нажимает на клавишу на клавиатуре вызывается метод onKey, передавая уникальное значение (codes рассмотрено выше) нажатой клавиши. Учитывая значение принятого кода, клавиатура выполняет определенное действие, которое соответствует коду.

Приведите свой метод onKey к такому виду:

И вот наконец то все! Мы добили наш урок и клавиатура готова к тестированию. Стоит отметить, что так, как наша клавиатура не имеет никакого Activity (Add No Activity, помните?) то ее после установки на эмулятор или устройство не отобразит среди установленных программ. Все дружно идем в настройки — настройки ввода и клавиатуры и там активируем наше творение, как используемый (или один из используемых) метод ввода. Запускаем что либо, где нужно вводить текст, и тестим!

Источник