- Создание пользовательской клавиатуры на Android
- 1. Предпосылки
- 2. Создать новый проект
- 3. Отредактируйте манифест
- 4. Создайте метод.
- 5. Редактирование строк.xml
- 6. Определите макет клавиатуры
- 6. Определите клавиши клавиатуры
- 7. Создание класса Service
- 8. Тестирование клавиатуры
- Как написать свою клавиатуру для Android
- Конструктор клавиатуры для android
Создание пользовательской клавиатуры на Android
Большинство устройств 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 в качестве метода ввода. Теперь вы можете использовать новую клавиатуру.
Источник
Как написать свою клавиатуру для 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
- Самое главное — можно создать любую раскладку, под любой язык (даже если данного языка нет в комплекте поставки, он появится автоматически) из символов содержащихся в кодировке utf8.
- Встроено 21 тема оформления.
Также любой желающий может создать свою (или использовать чужую) тему оформления, полностью меняющую внешний вид клавиатуры — цвет кнопок, их скругление и(или) расстояние между ними и т.д. - Мультибуфер обмена (соответственно есть все операции с буфером) хранит неограниченное число последних скопированных текстов (количество настраивается в настройках).
- Табуляция, стрелки, поддерживает полное редактирование текста, три вида калькулятора — простой, научный и программируемый, счетчик нажатых символов, клавиши «backspace» и delete», Alt и Ctrl, голосовой набор, запуск приложений прямо из клавиатуры, неограниченное количество жестов (их можно создавать самому) и многое многое другое .
- При этом всём — очень маленький размер apk и одна из самых маленьких, а может и самая маленькая клавиатура по потреблению памяти.
- Высоту клавиш, отдельно для портретного и ландшафтного режима, с просмотром результата;
- Список языков, для клавиши переключения языков;
- Раскладки клавиатур отдельно для портретного и ландшафтного режима;
- Шрифты для отображения надписей на клавишах, а также размер слов в окне автодополнения;
- Текущую тему оформления (встроено 21 тема оформления);
- Шрифт для полноэкранного редактора;
- Виброотклик для короткого и длинного нажатия, и интервалы виброотклика в милисекундах;
- Поведение клавиши Shift (например, можно отключить режим CapsLock);
- Изменение регистра и вставку пробелов при вводе;
Всех возможностей перечислить не представляется возможным, их огромное количество. Некоторое представление о них, вы можете прочесть в обзорах ниже.
Из основных:
- В клавиатуре можно создать свою раскладку (для конкретного языка), или скин. Инструкции об этом находится в ОТДЕЛЬНЫХ приложениях jbak2layout и jbak2skin (смотри ➜ Дополнительные компоненты ).
- Для каждого языка есть минимум две раскладки (для русского и английского их штук по пять) : одна стандартная qwerty, другая с увеличенными клавишами для удобства ввода в портретном режиме.
- Добавлено три вида калькулятора (простой, научный и программируемый)
- Добавлен счетчик нажатий символов (удобно например, контролировать длину набранной sms (после определенного количества символов смс-ки становятся платными))
- Добавлено отображение кода последней нажатой клавиши (удобно при создании своей раскладки)
- добавлена клавиша delete (удаляет символ справа от курсора)
- На каждой буквенной клавише есть дополнительный символ, который вводится по удержанию этой клавиши.
- По удержанию клавиши Shift выводится специальная клавиатура для операций с текстом, позволяющая легко выделять, копировать, вставлять текст.
- По удержанию клавиши Enter выводится клавиатура для ввода смайликов.
- Удерживая клавишу 123 — вызываем главное меню программы, содержащее мультибуфер обмена, шаблоны, запуск настроек и т.д.
- Мультибуфер обмена хранит последние скопированные тексты (настраивается, по умолчанию 20)
- Удерживая клавишу 123 — вызываем главное меню
- Шаблоны настраиваются пользователем, они могут содержать произвольный текст для вставки в поля ввода и некоторые специальные инструкции.
- Если вы находитесь на символьной раскладке (123), и на ней есть клавиша Shift, то по короткому нажатию по ней вызывается дополнительная символьная раскладка.
- Можно вызвать клавиатуру откуда угодно из шторки (включив соответственную настройку), без наличия поля ввода. Иногда необходимо, например в некоторых играх.
- Многое и многое другое. Всех возможностей даже я, разработчик, не смогу перечислить. Так гибко заложено ещё первым автором, ну и я добавил жару. 🙂
>>>Проголосуйте в опросе за лучшую клавиатуру В теме запрещена публикация «советов» об отключении проверки обновления!
А кроме того, пожалуйста! если я вас прошу что-то сделать, то не нужно придумывать что-то своё, что на ваш взгяд поможет, или заменит мою просьбу.
Нет, нужно сделать именно так и то, что я просил. Буквально.
Не тратьте ни своё, ни моё время!
Например, если я попросил выложить файл раскладки, то нужно выложить именно файл раскладки, а не содержимое файла.
Если попросил скриншот, то нужен именно скриншот, а не подробнейшее и абсолютно ненужное текстовое описание.
В противном случае, ваши посты могут быть просто проигнорированы.
Спасибо за понимание.
jbak2dict
Единая программа выборочной установки словарей
Jbak2 Keyboard (Пост wolf3d2 #60543275)
Jbak2layout
Дополнительные раскладки и инструкции Как создать свою раскладку и инструкция по программированию на встроенном калькуляторе.
Jbak2 Keyboard (Пост wolf3d2 #44740764)
- (Видео)По первоначальному включению клавиатуры
- Первые впечатления человека, только установившего клавиатуру
- Небольшой обзор как инструмента для копирайтера от
bambur2, :
https://texterra.ru/bl…abotu-s-mobilnika.html - Мини-обзор по возможностям клавиатуры
Команда «Переход в начало всего текста» в редакторе QuickEdit
- Что такое разметка в xml-файле и её реализация для jbak2 (в формате FB2)
- Как узнать путь к иконке на вашем устройстве
- Как оформить спец. клавиши текстовым способом
- Как создать клавишу «Неразрывный пробел» и её применение
- Как создать и пользоваться горячими клавишами
- Принудительный вызов числовой клавиатуры
- Как создать клавишу «Перевод строки»
- Отображение языка выбранной раскладки на клавише «Пробел»
- Сочетание клавиш Ctrl+ и Alt+ в английской раскладке
Требуется Android: 4.4 и выше
Русский интерфейс: Да
Разработчик: wolf3d2
Программа больше не публикуется в маркете, но она там есть (древняя версия).
Загрузить актуальную, можно или с домашней страницы программы, или здесь.
Market: https://play.google.com/store/apps/details?id=com.jbak2.JbakKeyboard
Домашняя страница: https://jbak2.ucoz.net/
Для некоторых прошивок андроид 4.2.2-4.0 со старым sdk в программе
версия: 2.31.12 Jbak2 Keyboard (Пост wolf3d2)
Для андроид ниже 2.3
версия: 2.27.13 Jbak2 Keyboard (Пост wolf3d2)
Источник