Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android SDK
Code

Стварэнне карыстацкай клавіятуры на Android

Difficulty:BeginnerLength:LongLanguages:

Belarusian (беларуская мова) translation by Alex Grigorovich (you can also view the original English article)

Final product image
What You'll Be Creating

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

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

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

Перадумовы

Вам спатрэбіцца камплект Eclipse ADT Bundle. Вы можаце загрузіць яго з сайта распрацоўніка Android.

Стварыць новы праект

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

эта прыкладанне не будзе мець ніякіх дзеянняў, таму зніміце сцяжок з Стварыць мерапрыемства і націсніце Гатова.

Адрэдагуйце маніфест

Экранная клавіятура разглядаецца як 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, каб ён меў наступнае тэкст быў:

Вызначце макет клавіятуры

Макет нашай клавіятуры ўтрымлівае толькі 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 выкарыстоўваецца для перамалёўкі ўсіх ключоў.
  • InvalidateAllKeys выкарыстоўваецца для перамалёўкі ўсіх ключоў. Калі код ўяўляе літару алфавіту, а зменная caps мае значэнне true, то сімвал пераўтворыцца ў верхні рэгістр.

Абнавіце метад onKey, каб ён выглядаў так

8. Тэставанне клавіятуры

Такім чынам, экранная клавіятура гатовая да тэставання. Скомпилируйте і запусціце яе на прыладзе Android. Гэта прыкладанне не мае Activity, што азначае, што яно не з'явіцца ў панэлі запуску. Каб выкарыстоўваць яе, яго варта спачатку актываваць у наладах прылады.

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

Заключэнне

У гэтым уроку вы навучыліся ствараць клавіятуру для Android з нуля. Каб змяніць знешні выгляд вашай клавіятуры, усё, што вам трэба зрабіць, гэта дадаць дадатковы стыль у файлы theres/layout/keyboard.xml і res/layout/preview.xml. Каб змяніць становішча клавіш, абновіце файл res/xml/qwerty.xml. Каб дадаць дадатковыя функцыі на клавіятуру, звярніцеся да дакументацыі распрацоўніка.


Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.