Създаване на собствен Android клавиатура

Днес ние ще се научат да не правят нищо там, но съвсем реална клавиатура с цялата стандартния набор от функции, които, ако искате, можете дори да използвате на вашия Android устройство, вместо на стандарта (и представете си - пишете SMS-и към собствената си клавиатура, какво би могло да бъде по-добре: )). Ако мислите, че урокът ще бъде много трудно - ти си прав, не си прав. Оказва се, че стандартната функционален Android SDK Управителят има всичко необходимо, за да се създаде пълноценна клавиатура без ненужно страдание. Ние няма да се налага да се направи във външния вид на бутоните, или да персонализирате признаването на натискания на клавиши, или страдат от обвързване нашите бъдещи клавиатура полета за въвеждане. Всичко това е вече по подразбиране е в мениджъра на SDK, ние просто трябва да се научат как да се възползват от него!







Нека да започнем. Създаване на нов проект, аз му се обадих на клавиатурата (както сме се договорили - всички имена по ваша преценка, само вие да не ни объркани от тях). На този етап, когато са поканени да създадат някои или дейност, изберете Добавяне Няма активност и натиснете Finish.

Първо най-важното, което трябва да направим е да стигнем до нашата молба позволявайки му да бъде клавиатурата :). Искаме да създадат своя собствена входно устройство, което се нарича редактор за въвеждане (IME). тя се определя във файла на манифеста като услуга. Използване на разрешения BIND_INPUT_METHOD и съответства действие android.view.InputMethod. Отидете в AndroidManifest.xml файла на манифеста и добавите маркера следното:

Вижте червена черта (ние сме свикнали), не се притеснявайте.

Service етикет съдържа маркер . който се отнася до несъществуваща до method.xml файл. Без този файл на операционната система Android не признава нашата вярна metol клавиатура като вход, който може да се използва. Този файл трябва да съдържа подробности за метода на въвеждане и неговите подтипове. За нашия клавиатура определи само един подтип да локализират en_US (все още няма да се експериментира с българина, ние разбираме важния принцип). Създаване на папка в приложение на ВЕИ / оформление и го създадете искаш да method.xml файл. Въвеждат в RES / оформление / mehod.xml файл, както следва:

Сега нека да редактирате файла низови ресурси ВЕИ / стойности / strings.xml. Трябва да добавите един ред тук за:

- име на ИПИ;

- име за ИПИ подтип;

Името на приложението, което вече имаме, можем да добавим само две желаните линии. Редактирано файл strings.xml изглежда така:

Сега трябва да се определи вида на външна клавиатура. оформление на файла за нашата клавиатура ще съдържа само един обект - KeyboardView. За да ни клавиатура се появява в долната част на екрана, настройте layout_alignParentBottom атрибут да е вярно. Създаване на файлове RES / оформление / keyboard.xml следното:

keyPreviewLayout ред за това, което ще изглежда като натискане на клавиш на нашата клавиатура. Както можете да видите, за външния му вид ще бъде отговорен предварителен преглед на файлове. които ще създадем. Създаване на файлове RES / оформление / preview.xml и добавете следното съдържание:







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

- кодове - този атрибут съдържа уникален код, който характеризира ключът, който е бил натиснат.

Всеки ключ, независимо дали става числа, букви а - означава нищо има свой уникален код. Например, буквата А има кодовете стойност - 97, съответно keyLabel трябва да се даде стойност "А". Един бутон, можете да посочите повече от една стойност в кодовете на атрибутите. ключът е да се вземат конкретна стойност на тези три, както и, в зависимост от това колко пъти сме натискане на бутон (не забравяйте да настроите клавиатурата стари мобилни - на същия клавиш, "а, б, в, г" и т.н.). Например, ако ние определяме кодовете на бутоните 63.33 и 58 след това с едно натискане на характер получили, с две докосвания, за да получите кратко последователност, и в трите преси - на дебелото черво "" "" "?"!.

Ключът може да има няколко качества:

- keyEdgeFlags - атрибут може да използва стойността наляво или надясно. Тези качества се добавят към клавишите, които се намират в ляво или вдясно, съответно;

- keyWidth - определя широчината на ключовете. Обикновено определя като процент;

- isRepeatable - ако това поле не е вярно. След това дълго натискане на клавиш ще повтори своята дейност на няколко пъти (например, "аааааа") са склонни да се включат тази опция, за да изтриете ключовете, бар пространство, и т.н.

Ключовете на клавиатурата са групирани в колони. Съвсем практически до 10 ключове и всеки ключ колона, за да се получи 10% от ширината на общата ширина на клавиатурата. Ние повишаване на височината на ключове равен 60dp. Можете да я промените, но това не се препоръчва да се направи с височина по-малко 48dp. Ние ще имаме 5 колони с ключове.

Преминаването от теория за действие. Създаване на ВЕИ / оформление / qwerty.xml файл. Файлът трябва да съдържа следния код:

Някои кодове може да има отрицателно атрибутите кодове стойност, те са еквиваленти на вградени константи в класа на клавиатурата. Например, стойността на -5 съответства Keyboard.KEYCODE_DELETE.

Направете нов Java клас и го наричат ​​IME.java. Той трябва да наследи класа и направи InputMethodService OnKeyboardActionListener интерфейс. Този интерфейс съдържа методи, които се наричат ​​с натискане на клавишите.

Класът на ИПИ трябва да има 3 вида променливи:

- KeyboardView - отнасящи се до вида, определен в оформлението файл;

- Клавиатура - употреби, които са били възложени KeyboardView;

- булеви - доклади, включени главните букви-е.

Ако го направите всички по-горе, нашият файл IME.java става:

Когато клавиатурата е създадена, наречена onCreateInputView метод. Всички променливи могат да бъдат инициализирани услуга маркер точно там в метода. Добавете метод onCreateInputView.

Сега трябва да се коригира възпроизведения звук при натискане на клавишите. Ние използваме за този клас AudioManager. С помощта на стандартен метод, звуците в PlayClick. Код аудио тунер:

Сега ние трябва да конфигурирате onKey метод, за да направи работата ни с клавиатура за въвеждане полета (обикновено EditText) към други приложения. За този метод за цел getCurrenrInputConection. Тук трябва да конфигурирате следните неща:

- commitText - да се добавят един или повече символи в полето за въвеждане;

- deleteSurroundingText - за да изтриете един или повече символи в полето за въвеждане;

- sendKeyEvent - изпратете тип събитие KEYCODE_ENTER. външно приложение (всяко където ние ще използваме нашата клавиатура).

Всеки път, когато потребителят натисне клавиш от клавиатурата, се нарича метод onKey. предаване на уникална стойност (кодове дискутиран по-горе) на натиснат клавиш. Като се има предвид стойността на получения код, клавиатурата извършва действие, който отговаря на кода.

Носете си начин onKey към тази форма:

И накрая всичко това! Ние завърши урока, а клавиатурата е готова за тестване. Заслужава да се отбележи, че тъй като нашата клавиатура не е дейност (Добавяне Няма активност, помниш ли?), Че веднъж инсталиран на емулатор или устройство не се показва сред инсталираните програми. Всички те отидат в настройките и входни настройки --- клавиатурата, и там ще се активира се използва нашето творение (или един от най-използвани) метод за въвеждане. Пусни нещо, където трябва да въведете текст и тест!

Оригинална на това ръководство тук.