Как создать свою клавиатуру на андроид

от admin

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

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

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

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

Премиум вариант

Если вы спешите, посмотрите Android Keyboard Themes , готовое к использованию решение от Envato Market.

Приложение дает вам возможность выбрать одну из 22 встроенных тем клавиатуры или создать собственную тему.

Темы клавиатуры Android

Или вы можете нанять фрилансера в Envato Studio. Просто просмотрите наш раздел Mobile & Apps, и вы обязательно найдете эксперта, который сможет вам помочь.

Разработчики мобильных приложений и приложений на Envato Studio

Если вы предпочитаете создавать свои собственные, читайте дальше, чтобы узнать, как это сделать.

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

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

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

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

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

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

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

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

4. Создайте method.xml

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

5. Отредактируйте strings.xml

Строки, используемые этим приложением, определены в файле res / 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 . Это значение можно отрегулировать, но значения менее 48 dp не рекомендуется. Наша клавиатура будет иметь пять рядов клавиш.

Jbak2 keyboard. Конструктор

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

В клавиатуре Jbak2 keyboard можно настроить:
— Высоту клавиш, отдельно для портретного и ландшафтного режима
— Список языков
— Переключение языков на выбор: отдельной клавишей, или жестом
— Раскладки, отдельно для портретного и ландшафтного режима и для каждого языка
— Раскладки для круглых часов
— Шрифты для отображения надписей на клавишах
— Текущую тему оформления
— Содержимое (строка по умолчанию) и цвета окна Автоввода
— Управление жестами (можно отключить)
— Шрифт для полноэкранного редактора
— Виброотклик для короткого и длинного нажатия, интервалы виброотклика в милисекундах
— Поведение клавиши Shift (например, можно отключить режим CapsLock)
— Изменение регистра и вставку/удаление пробелов при вводе.

Возможности клавиатуры Jbak2 keyboard:
— создание своей раскладки для любого языка, даже если он отсутствует в комплекте клавиатуры
— изменение высоты клавиш (также вертикальная коррекция)
— дополнительные символы на клавишах (по долгому удержанию)
— мульти буфер обмена
— ctrl и alt, а также всех кодов клавиш (keycode)
— добавление своих текстовых шаблонов
— большой выбор тем и раскладок
— транслит
— встроены простой, научный (инженерный) и программируемый калькулятор
— клавиша DEL — удаление символа справа от курсора
— голосовой ввод текста (если поддерживается на устройстве)
— горячие клавиши
— клавиатура смайликов
— полное редактирование текста
— автоввод и автоисправление текста (нужно установить словарь для каждого языка)
— стрелки и постраничное листание
— неограниченное количество жестов
— табуляция
— поддержка макросов

После установки клавиатуру необходимо включить. Для этого, а также при возникновении любого вопроса, прочтите пункт настроек "Как пользоваться клавиатурой". Там содержатся ответы практически на любой вопрос.

Удерживая клавишу 123 (opt) — вызываем Главное меню клавиатуры. В нем находятся различные полезные ссылки, такие как: Настройки, Мультибуфер обмена, Шаблоны, Калькулятор и т.д.
Отображение выводимых пунктов меню тоже настраивается.

По удержанию клавиши Enter выводится раскладка для ввода смайликов (а также есть раскладка из эмодзи).

Мульти буфер обмена клавиатуры хранит 20 (значение настраивается) последних скопированных текстов с возможностью вставки в поля ввода.

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

По удержанию клавиши Shift выводится специальная раскладка редактирования содержащая стрелки, команды буфера обмена, позволяющие легко выделять, копировать, вставлять текст.

Встроенные в клавиатуру языки:
Английский, Русский, Украинский, Белорусский, Греческий, Немецкий, Французский, Итальянский, Испанский, Шведский, Турецкий, Татарский, Башкирский, Иврит, Армянский, Казахский, Латышский, Арабский, Индонезийский, Грузинский, Польский, Эстонский, Норвежский, Узбекский, Азербайджанский, Португальский, Персидский.

Дополнительные возможности:
— Данная клавиатура поддерживает все языки из "двухбуквенного" (iso 639.1) (ru,en и т.д.), и "трёхбуквенные" (iso 639.2) (rus, eng и т.д.)
— Jbak2 keyboard — это конструктор раскладок (клавиатур). Вы можете сами создать любую раскладку для любого языка.
Информация о том, как создать свою раскладку, находится в отдельном приложении jbak2layout
— Для каждого языка есть минимум две раскладки. Всего клавиатура по состоянию на июнь 2019г. содержит более 100 раскладок для различных языков.
— Также можно создать свой скин (Тему) (инструкция находится в приложении jbak2skin)

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

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

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

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

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

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

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

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

Читать:
Php где может использоваться count

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

Итак, мы подготовили 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

Ashraff Hathibelagal

Ashraff Hathibelagal Last updated Dec 1, 2014
Final product imageFinal product image 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 , как показано ниже:

Затем мы создаем метод, который воспроизводит звук при нажатии клавиши. Мы используем класс 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 в качестве метода ввода. Теперь вы можете использовать новую клавиатуру.

Похожие статьи