Cele mai multe dispozitive Android nu au o tastatură fizică. În schimb, se bazează pe o tastatură virtuală sau soft pentru a accepta intrarea utilizatorului. Dacă vă aflați în personalizarea Android, cunoașterea modului de a construi o tastatură personalizată, soft, vă poate duce hobby-ul la un nivel complet nou.
Folosind SDK-ul Android, puteți crea rapid o tastatură moale cu surprinzător de puține linii de cod, deoarece SDK-ul are grijă de multe dintre sarcinile de nivel scăzut, cum ar fi recunoașterea atingerilor cheie, desenarea tastaturii și stabilirea conexiunilor între tastatură și câmpurile de introducere.
În acest tutorial, veți învăța cum să creați o tastatură completă, funcțională, care poate servi ca tastatură implicită a dispozitivului dvs. Android.
Dacă vă grăbiți, verificați temele Android Keyboard, o soluție gata de utilizat de la Envato Market.
Aplicația vă oferă flexibilitatea de a alege unul dintre cele 22 de teme de tastatură încorporate sau de a vă crea propria temă personalizată.
Teme pentru tastatură AndroidSau ai putea angaja un freelancer pe Envato Studio. Doar parcurgeți secțiunea Mobile & Apps și sunteți sigur că veți găsi un expert care vă poate ajuta.
Dezvoltatori de aplicații mobile și de aplicații de pe Envato Studio;Dacă preferați să construiți propriul dvs., citiți mai departe pentru a afla cum.
Veți avea nevoie de pachetul Eclipse ADT instalat. Puteți să o descărcați de pe site-ul Android Developer.
Activați Eclipse și creați o nouă aplicație Android. Apelați această aplicație, SimpleKeyboard. Asigurați-vă că alegeți un nume de pachet unic. Setați setul SDK minim necesar Android 2.2 și setați SDK-ul țintă Android 4.4.
Această aplicație nu va avea activități care să deselecteze acest lucru Creați activitate și faceți clic pe finalizarea.
O tastatură moale este considerată ca o Metoda Editor de intrare (IME) de sistemul de operare Android. Un IME este declarat a Serviciu
în AndroidManifest.xml care utilizează BIND_INPUT_METHOD
permisiune și răspunde la acțiune android.view.InputMethod
.
Adăugați următoarele linii la cerere
eticheta manifestului:
serviciu
tag în fișierul manifest conține un a meta-date
tag care trimite la un fișier XML numit method.xml. Fără acest fișier, sistemul de operare Android nu ne va recunoaște Serviciu
ca serviciu valabil IME. Fișierul conține detalii despre metoda de introducere și subtipurile acesteia. Pentru tastatura noastră, definim un singur subtip pentru ro_ localizare. Creați directorul res / xml dacă nu există, adăugați fișierul method.xml la el. Conținutul fișierului ar trebui să fie:
Corzile pe care această aplicație le utilizează sunt definite în secțiunea res / valori / strings.xml fişier. Vom avea nevoie de trei șiruri:
Actualizați-vă strings.xml astfel încât să aibă următorul conținut:
SimpleKeyboard Simplă IME Română (SUA)
Structura tastaturii noastre conține doar a KeyboardView
. layout_alignParentBottom
atributul este setat la Adevărat
astfel încât tastatura să apară în partea de jos a ecranului.
Creați un fișier numit res / aspect / keyboard.xml și înlocuiți conținutul cu următoarele:
keyPreviewLayout
este aspectul ferestrei pop-up de scurtă durată care apare ori de câte ori este apăsată o tastă de pe tastatură. Acesta conține un singur TextView
. Creați un fișier numit res / aspect / preview.xml și adăugați următoarele:
Detaliile cheilor de tastatură și pozițiile acestora sunt specificate într-un fișier XML. Fiecare cheie are următoarele atribute:
keyLabel
: Acest atribut conține textul afișat pe tastă.coduri
: Acest atribut conține valorile unicode ale caracterelor reprezentate de cheie.De exemplu, pentru a defini o cheie pentru literă A, coduri
atributul ar trebui să aibă valoarea 97 si keyLabel
atributul ar trebui setat la A.
Dacă mai multe coduri sunt asociate cu o cheie, atunci caracterul reprezentat de cheie va depinde de numărul de robinete pe care le primește cheia. De exemplu, dacă o cheie are codurile 63, 33, și 58:
O cheie poate avea și câteva atribute opționale:
keyEdgeFlags
: Acest atribut poate lua valoarea stânga
sau dreapta
. Acest atribut este de obicei adăugat la tastele din stânga și la dreapta unui rând.keyWidth
: Acest atribut definește lățimea unei taste. De obicei este definită ca valoare procentuală.isRepeatable
: Dacă acest atribut este setat la Adevărat
, apăsând lung tasta va repeta acțiunea cheii de mai multe ori. Este de obicei setat la Adevărat
pentru tastele de ștergere și bara de spațiu.Tastele unei tastaturi sunt grupate ca rânduri. Este o practică bună să limitați numărul de taste dintr-un rând la maximum zece, fiecare cheie având o lățime egală cu 10% din tastatură. Înălțimea tastelor este setată la 60dp în acest tutorial. Această valoare poate fi ajustată, dar valori mai mici decât 48dp nu sunt recomandate. Tastatura noastră va avea cinci rânduri de taste.
Acum putem merge și proiectăm tastatura. Creați un fișier nou numit res / xml / qwerty.xml și înlocuiți conținutul cu următoarele:
Este posibil să fi observat că unele chei au valori negative pentru coduri
atribut. Valorile negative sunt egale cu constantele predefinite din Tastatură
clasă. De exemplu, valoarea -5
este egal cu valoarea lui Keyboard.KEYCODE_DELETE
.
Serviciu
ClasăCreați o nouă clasă Java și apelați-o SimpleIME.java. Clasa ar trebui să se extindă InputMethodService
clasați și implementați OnKeyboardActionListener
interfață. OnKeyboardActionListener
interfața conține metodele care sunt numite atunci când tastele tastaturii soft sunt apăsate sau apăsate.
SimpleIME
clasa ar trebui să aibă trei variabile membre:
KeyboardView
referindu-se la vederea definită în planTastatură
instanță care îi este atribuită KeyboardView
boolean
spunându-ne dacă blocarea capacelor este activatăDupă declararea acestor variabile și adăugarea metodelor OnKeyboardActionListener
interfață, SimpleIME
clasa ar trebui să arate astfel:
clasa publică SimpleIME extinde InputMethodService implementează OnKeyboardActionListener private KeyboardView kv; tastatură tastatură privată; private boolean caps = false; @Override public void onKey (int primCode, int [] keyCodes) @Override public void onPress (int primCode) @Override public void onRelease (int primCode) @Override public void onText CharSequence text @ () @Override public void swipeLeft () @Override public void swiftRight () @Override public void swipeUp ()
Atunci când este creată tastatura, onCreateInputView
se numește metoda. Toate variabilele membrilor Serviciu
pot fi inițializate aici. Actualizați punerea în aplicare a onCreateInputView
după cum se arată mai jos:
@Overide publice Vizualizare onCreateInputView () kv = (KeyboardView) getLayoutInflater () inflate (R.layout.keyboard, null); tastatură = tastatură nouă (aceasta, R.xml.qwerty); kv.setKeyboard (tastatura); kv.setOnKeyboardActionListener (aceasta); returnează kv;
Apoi, vom crea o metodă care va reda un sunet când este apăsată o tastă. Noi folosim AudioManager
pentru a reda sunetele. SDK-ul Android include câteva efecte sonore implicite pentru presele de taste și acestea sunt utilizate în playClick
metodă.
private void playClick (int keyCode) AudioManager am = (AudioManager) getSystemService (AUDIO_SERVICE); comutator (keyCode) caz 32: am.playSoundEffect (AudioManager.FX_KEYPRESS_SPACEBAR); pauză; cazul Keyboard.KEYCODE_DONE: cazul 10: am.playSoundEffect (AudioManager.FX_KEYPRESS_RETURN); pauză; caz Keyboard.KEYCODE_DELETE: am.playSoundEffect (AudioManager.FX_KEYPRESS_DELETE); pauză; implicit: am.playSoundEffect (AudioManager.FX_KEYPRESS_STANDARD);
În cele din urmă, actualizați onKey
astfel încât aplicația noastră de tastatură să poată comunica cu câmpurile de intrare (de obicei Editează textul
vizualizări) ale altor aplicații.
getCurrentInputConnection
metoda este folosită pentru a obține o conexiune la câmpul de intrare al unei alte aplicații. Odată ce avem conexiunea, putem folosi următoarele metode:
commitText
pentru a adăuga unul sau mai mulți caractere în câmpul de introduceredeleteSurroundingText
pentru a șterge unul sau mai mulți caractere din câmpul de introduceresendKeyEvent
pentru a trimite evenimente, cum ar fi KEYCODE_ENTER
, la aplicația externăOri de câte ori un utilizator apasă o tastă pe tastatura soft, onKey
metoda se numește cu valoarea unicode a cheii ca unul dintre parametrii săi. Pe baza acestei valori, tastatura efectuează una dintre următoarele acțiuni:
KEYCODE_DELETE
, un caracter din stânga cursorului este șters folosind deleteSurroundingText
metodă.KEYCODE_DONE
, A KEYCODE_ENTER
eveniment cheie este declanșat.KEYCODE_SHIFT
, valoarea capace
variabila este modificată și starea de schimbare a tastaturii este actualizată folosind setShifted
metodă. Tastatura trebuie să fie redesenată atunci când starea se schimbă, astfel încât etichetele cheilor să fie actualizate. invalidateAllKeys
metoda este folosită pentru redragerea tuturor cheilor.capace
este setată la Adevărat
, atunci caracterul este convertit la majuscule.Actualizați onKey
astfel încât să pară următoarele:
@Override public void onKey (int primCode, int [] keyCodes) InputConnection ic = getCurrentInputConnection (); playClick (primaryCode); comutator (primCode) tastatură caz.KEYCODE_DELETE: ic.deleteSurroundingText (1, 0); pauză; carcasă Keyboard.KEYCODE_SHIFT: caps =! caps; keyboard.setShifted (capace); kv.invalidateAllKeys (); pauză; carcasă Keyboard.KEYCODE_DONE: ic.sendKeyEvent (noul KeyEvent (KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ENTER)); pauză; implicit: codul char = (char) primaryCode; dacă (Character.isLetter (code) && caps) code = Character.toUpperCase (cod); ic.commitText (String.valueOf (cod), 1);
Tastatura soft este acum pregătită pentru a fi testată. Compilați și rulați-l pe un dispozitiv Android. Această aplicație nu are o aplicație Activitate
, ceea ce înseamnă că nu va apărea în lansator. Pentru a-l utiliza, ar trebui să fie activat mai întâi în dispozitiv Setări.
După activare Simplă IME, deschideți orice aplicație care permite introducerea textului (de exemplu, orice aplicație de mesagerie) și faceți clic pe unul din câmpurile sale de introducere. Ar trebui să apară o pictogramă de tastatură în zona de notificări. În funcție de dispozitivul dvs., puteți să dați clic pe pictograma respectivă sau să glisați bara de notificare în jos și selectați Simplă IME ca metodă de intrare. Acum ar trebui să puteți tasta folosind noua tastatură.
În acest tutorial, ați învățat cum să creați o aplicație personalizată de la tastatură de la zero. Pentru a schimba aspectul tastaturii, tot ce trebuie să faceți este să adăugați stilul suplimentar la res / aspect / keyboard.xml și res / aspect / preview.xml fișiere. Pentru a schimba pozițiile tastelor, actualizați res / xml / qwerty.xml fişier. Pentru a adăuga mai multe caracteristici la tastatură, consultați documentația dezvoltatorului.