Crearea tastaturii proprii Android

Astăzi vom învăța să facem nimic acolo, dar tastatura foarte real cu toate setul standard de caracteristici, care, dacă doriți, puteți utiliza chiar și pe dispozitivul Android în loc de standard (bine imagina - tastarea -urilor pentru propria tastatură, ceea ce ar putea fi mai bine: )). Dacă credeți că lecția va fi foarte dificil - ai dreptate, te înșeli. Se pare că standardul funcțional Managerul Android SDK-ul are tot ce ai nevoie pentru a crea o tastatură cu drepturi depline fără a provoca suferințe inutile. Nu va trebui să atragă în apariția de butoane, sau personaliza recunoașterea de apăsări de taste, sau suferă de legare viitoare câmpurile noastre de introducere de la tastatură. Toate acestea sunt deja implicit este în Manager SDK, doar trebuie să învățăm cum să profite de ea!







Să începem. Crearea unui proiect nou, l-am numit tastatură (așa cum am convenit - toate numele la discreția ta, numai tu nu te confuz de ele). La acel moment, când suntem invitați să creeze o parte sau de activitate, selectați Adăugați Nicio activitate și faceți clic pe Finalizare.

Mai întâi, trebuie să facem este a ajunge la cererea noastră permițându-i să fie tastatura :). Dorim să creați propriul lor dispozitiv de intrare, care se numește Editor metodă de intrare (IME). este definit în fișierul manifest ca serviciu. Utilizați permisiunile BIND_INPUT_METHOD și corespunde acțiunii android.view.InputMethod. Du-te la AndroidManifest.xml fișier manifest și adăugați eticheta următor:

A se vedea subliniere roșie (ne sunt folosite pentru a), nu vă faceți griji.

Eticheta de service conține o etichetă . care se referă la un non-existent până la fișierul method.xml. Fără acest fișier sistemul de operare Android nu recunoaște tastatura noastră metol corect ca date de intrare, care poate fi utilizat. Acest fișier trebuie să conțină detalii despre metoda de introducere și a subtipurilor sale. Pentru tastatura noastră definim doar un singur subtip pentru a localiza ro_ (nu va experimenta cu încă românească, înțelegem principiul important). Crearea în anexa dosar res / aspect și creați-l doriți ca noi să method.xml fișier. Aduce în res / aspect / fișierul mehod.xml, după cum urmează:

Acum, să editați res fișier resurse șir / valori / strings.xml. Trebuie să adăugați o linie aici pentru:

- nume pentru IME;

- nume pentru subtipul IME;

Numele aplicației avem deja, putem adăuga doar două linii dorite. fișier strings.xml Editat arată astfel:

Acum aveți nevoie pentru a determina tipul de tastatură externă. fișier aspect pentru tastatura noastră va conține doar un singur obiect - KeyboardView. Pentru tastatura noastră apare în partea de jos a ecranului, reglați atributul layout_alignParentBottom la true. Crearea unui fișier res / aspect / keyboard.xml următoarele:

keyPreviewLayout rând pentru ceea ce va arata ca apăsarea unei taste de pe tastatura noastră. După cum puteți vedea, pentru aspectul său va fi responsabil previzualizare fișier. pe care o vom crea. Crearea unui fișier res / aspect / preview.xml și adăugați următorul conținut:







Acum aveți nevoie pentru a defini comenzi rapide de la tastatură. O descriere detaliată a tastelor și amplasarea lor este descrisă într-un fișier special .xml. Fiecare cheie are următoarele atribute:
- keyLabel - nume cheie care va apărea pe butonul;

- coduri - acest atribut conține un cod unic care caracterizează cheia care a fost apăsat.

Fiecare cheie, fie că este vorba de numere, litere, o - înseamnă ceva are codul său unic propriu. De exemplu, litera A are codurile de valoare - 97, respectiv keyLabel trebuie să aibă valoarea „A“. Un buton, puteți specifica mai multe valori în codurile de atribute. cheia este de a lua o valoare specifică a acestor trei, precum și, în funcție de cât de multe ori am apăsat o tastă (amintiți-vă pentru a seta tastatura vechi mobil - pe aceeași cheie, „a, b, c, d“, etc.). De exemplu, dacă definim codurile buton 63.33 și 58, apoi la atingerea caracterului primit, cu două robinete pentru a obține o secvență scurtă, iar la cele trei presele - colon „“ „“ „?“!.

Cheia poate avea mai multe atribute:

- keyEdgeFlags - atribut poate utiliza valoarea la stânga sau la dreapta. Aceste atribute sunt adăugate la cheile care se află în stânga sau în extrema dreaptă, respectiv;

- keyWidth - determină lățimea cheilor. De obicei, definit ca procent;

- isRepeatable - în cazul în care acest atribut este adevărat. apoi o apăsare de tastă timp va repeta de mai multe ori funcționarea acestuia (de exemplu, „aaaaaa“) tind să includă această opțiune pentru a șterge cheile, bara de spațiu, etc.

Tastele din tastatura sunt grupate în coloane. Destul de practic la 10 taste și fiecare coloană cheie pentru a da 10% din lățimea lățimea totală a tastaturii. Am ridica înălțimea egală chei 60dp. Puteți să-l schimba, dar nu este recomandat să facă o înălțime mai mică 48dp. Vom avea 5 coloane de chei.

Trecerea de la teorie la acțiune. Creați res / aspect / fișier qwerty.xml. Fișierul trebuie să conțină următorul cod:

Unele taste pot avea un efect negativ coduri de valoare a atributului, acestea sunt echivalente de constante predefinite din clasa tastatură. De exemplu, valoarea -5 corespunde Keyboard.KEYCODE_DELETE.

Acum, creați o nouă clasă Java și numesc IME.java. Ea trebuie să moștenesc clasa și de a face interfață InputMethodService OnKeyboardActionListener. Această interfață conține metode care sunt apelate prin apăsarea tastelor.

Clasa trebuie să aibă 3 IME tipuri de variabile:

- KeyboardView - referindu-se la tipul definit în fișierul de aspect;

- Tastatura - utilizările care au fost atribuite KeyboardView;

- boolean - capace incluse rapoarte de blocare-e.

Dacă face toate cele de mai sus, IME.java fișierul nostru devine:

Atunci când tastatura este configurat, numit onCreateInputView metoda. Toate variabilele pot fi initializate Eticheta de service chiar acolo, în metoda. Adăugați o metodă onCreateInputView.

Acum trebuie să reglați sunetul de redare atunci când apăsați tastele. Noi folosim pentru această clasă AudioManager. Folosind metoda standard, sunetele din PlayClick. Cod tuner audio:

Acum trebuie să configurați metoda onKey, în scopul de a face munca noastră cu câmpurile de introducere de la tastatură (de obicei, EditText) către alte aplicații. Pentru această metodă scop getCurrenrInputConection. Aici trebuie să configurați următoarele:

- commitText - pentru a adăuga unul sau mai multe simboluri în câmpul de intrare;

- deleteSurroundingText - pentru a șterge una sau mai multe simboluri în câmpul de intrare;

- sendKeyEvent - trimite tip de eveniment KEYCODE_ENTER. o aplicație externă (orice în cazul în care vom folosi tastatura nostru).

De fiecare dată când utilizatorul apasă o tastă de pe tastatură se numește metoda onKey. transmițând o valoare unică (codurile discutat mai sus) a tastei apăsate. Având în vedere valoarea codului primit, tastatura efectuează o acțiune care corespunde codului.

Adu metoda onKey la acest formular:

Și, în final, totul! Am încheiat lecția, iar tastatura este gata pentru testare. Este demn de remarcat faptul că, tastatura noastră nu are nici o activitate (Adauga Nicio activitate, îți amintești?) Că odată instalat pe un emulator sau dispozitiv nu se afișează între programele instalate. Acestea toate merg în setările și setările de intrare --- tastaturii, și nu va activa este folosit creația noastră (sau unul dintre utilizat) metoda de introducere. Rulați orice în cazul în care aveți nevoie pentru a introduce text, și de testare!

Original acestui ghid aici.