Simplificar el desenvolupament d’aplicacions d’Android amb Anko

Dissenyada per JetBrains, l’organització darrere de Kotlin, Anko és una biblioteca de codi obert que pot canviar radicalment la forma en què creguis les aplicacions d’Android. Aprofita la sintaxi de Kotlin per oferir una gran col·lecció de funcions d’ajuda que l’ajuden a reduir la verbositat del seu codi a el temps que millora el seu rendiment ..

Anko es doblega com un DSL, abreviatura de llenguatge específic de l’domini, per crear dissenys d’Android. En altres paraules, pot actuar com una alternativa segura a l’tipus, dinàmica i més reutilitzable als arxius XML de disseny, que, com ja sabrà, tendeixen a ser difícils de manejar per a aplicacions grans.

En aquest tutorial , t’ajudaré a començar amb Anko mostrant-te com utilitzar algunes de les seves funcions més populars.

1. Configuració de el projecte

Per poder usar les funcions principals d’Anko en el seu projecte d’Android Studio, tot el que heu de fer és afegir el següent implementación dependència al aplicación mòdul de construir.gradle expedient:

implementación 'org.jetbrains.anko: anko: 0.10.1'

No obstant això, si voleu que Anko funcioni amb ginys de les biblioteques de suport d’Android, necessitarà les següents dependències addicionals:

implementación 'org.jetbrains.anko: anko-appcompat-v7: 0.10.1' implementación 'org.jetbrains.anko: anko-design: 0.10.1' implementación 'org.jetbrains.anko: anko-recyclerview-v7: 0.10. 1 'implementación' org.jetbrains.anko: anko-cardview-v7: 0.10.1 '

2. Creant Dissenys

Anko DSL té funcions d’ajuda per a gairebé tots els ginys que ofereix el SDK d’Android i les biblioteques de suport de Androi d. Usant-los, pots crear els teus dissenys programàticament. Els noms de les funcions coincideixen amb els noms dels widgets, però comencen amb una lletra minúscula. Per exemple, per crear un Vista de texto giny, fas servir Anko s vista de texto() funció. De la mateixa manera, per crear un Botón de acción flotante giny, pot utilitzar el Botón de acción flotante () funció.

Dins de les funcions, tindrà accés a totes les propietats i escoltes d’esdeveniments dels ginys associats. Per exemple, pot canviar la mida de text d’un Vista de texto giny mitjançant l’actualització de la valor de la tamano del texto propietat dins de l’vista de texto() funció. De la mateixa manera, pot afegir un detector d’esdeveniments a l’clicar amb el botó al hacer clic mètode.

Per ajudar-lo a comprendre millor com utilitzar el DSL, aquí hi ha un disseny de mostra per a una aplicació de navegador, que conté un Editar texto giny i un WebView giny col·locat dins d’un LinearLayout giny l’orientació és VERTICAL:

linearLayout orientación = LinearLayout.VERTICAL var myWebView: ¿WebView? = nulo editText inputType = InputType.TYPE_TEXT_VARIATION_URI imeOptions = EditorInfo.

el codi escrit en el Anko DSL és molt llegible i intuïtiu, però requereix cert temps per acostumar-se, especialment si ja ets un desenvolupador d’Android amb experiència. Ja no ha d’assignar identificadors als seus ginys, o fer servir el findViewById () mètode per fer referència a ells, perquè a diferència dels dissenys basats en XML, els dissenys basats en DSL d’Anko poden encapsular la lògica empresarial de la seva aplicació. Per exemple, pots veure que el Editar texto giny definit anteriorment té una OnEditorAction detector d’esdeveniments que crida directament a l’loadUrl () mètode de la WebView Widget per carregar la URL que l’usuari va escriure ..

a més, no has de trucar a l’setContentView () mètode més perquè Anko el crida automàticament dins del seu Actividad classe onCreate () mètode.

El DSL inclou diversos accessos directes que pot utilitzar per fer els seus dissenys més concisos. Per exemple, pot passar directament cadenes a les seves funcions per assignar etiquetes als widgets. Sovint, també pot evitar establir explícitament paràmetres de disseny com amples i alçades perquè els fa servir automàticament. El següent codi d’exemple mostra com crear un disseny que conté dos Vista de texto ginys d’una manera molt concisa:

verticalLayout textView ("One") textView ("Two")

A manera de comparació, això és com es veuria el disseny anterior si es creés de manera convencional: a

 

Finalment, val la pena esmentar que els dissenys creats amb el DSL d’Anko tendeixen a carregar-se més ràpid que els dissenys normals perquè no es requereix una anàlisi de XML ..

3. Creant diàlegs

Si creus que utilitzar el AlertDialog.Builder La classe per crear diàlegs és molta feina, definitivament no estàs sol.Per exemple, aquí és com normalment crearia un quadre de diàleg simple que mostra un títol, un missatge i un botó “D’acord”:

AlertDialog.Builder (este @ MyActivity) .setTitle ("My Dialog") .setMessage ("Este es un mensaje de prueba") .setPositiveButton ("OK", null) .create () .show ()

No obstant això, amb Anko, crear el diàleg anterior simplement implica una crida a l’alerta() Funció, que accepta el títol i el missatge de l’diàleg com els seus arguments ..

alerta ("Este es un mensaje de prueba", "Mi cuadro de diálogo") yesButton .show ()

Tingueu en compte que no ha de passar un context a l’alerta() funció. S’infereix el context automàticament ..

Anko té funcions similars amb noms intuïtius per ajudar-lo a crear ràpidament brindis i barres de refrigeris també. El següent codi mostra com crear brindis de curta i llarga durada:

tostada ("Esta es una tostada corta") longToast ("Y esta es una tostada larga")

4. Crear intencions

Sempre que necessiti iniciar una nova activitat en la seva aplicació, ha de crear una intenció. A més, si vol enviar dades a l’activitat, ha de incloure’ls en la intenció com un o més extres.

Amb anko startActivity () funció, normalment pot realitzar les dues tasques en una sola línia de codi. Per exemple, el següent codi li mostra com iniciar una activitat anomenada Mi actividad i passi dos extres, una cadena extra anomenada “PERSONA” i un sencer extra anomenat “EDAT”, a això:

startActivity("PERSONA" a "Bob", "EDAD" a 25)

Anko també té funcions d’ajuda per a diverses tasques comunes basades en intencions. Per exemple, pots usar el seu vistazo() Funció per obrir un URL en l’aplicació de navegador per defecte de el dispositiu. De la mateixa manera, pot utilitzar el correo electrónico() Funció per obrir l’aplicació de correu electrònic per defecte i redactar un correu electrònic ..

// Abrir navegador navegar ("https://tutsplus.com") // Abrir correo electrónico predeterminado de la aplicación de correo electrónico ("", "Hola", "Este es un correo electrónico de prueba")

5. Ús de bases de dades SQLite

Encara que totes les aplicacions d’Android poden crear i usar bases de dades SQLite sense dependències addicionals, molts desenvolupadors trien bases de dades de tercers com Realm. Per què? Bé, potser sigui perquè l’API SQLite d’Android és extremadament detallada, de baix nivell i requereix una bona comprensió de SQL. Afortunadament, Anko té funcions d’ajuda de SQLite per a resoldre tots aquests problemes .. a

Diguem que tenim una base de dades SQLite simple creada amb el següent codi:

val myDB = openOrCreateDatabase ("test.db", Context.MODE_PRIVATE, null)

amb Anko, ara pot afegir una taula a la base de dades anterior simplement utilitzant el crear mesa() funció, que espera el nom de la taula juntament amb un més o tuples que especifiquen els noms i tipus de dades de les seves columnes. El següent codi d’exemple crea una taula anomenada PERSONA que té quatre columnes, una de les quals serveix com a clau principal:

myDB.createTable ("PERSONA", verdadero, "NOMBRE" a TEXTO, "EDAD" a INTEGER, "NET_WORTH" a REAL, "ID" a INTEGER + PRIMARY_KEY)

a més, per inserir files a la taula, ja no ha de dependre de la Valores de contenido () classe. Pot trucar directament a l’insertar() funció a la base de dades, especifiqueu el nom de la taula a la qual voleu afegir la fila i, després, pásele els valors de columna en forma de tuples.

// Agregue una fila myDB.insert ("PERSONA", "NOMBRE" a "Bob Martin", "EDAD" a 25, "NET_WORTH" a 2500.50, "ID" a 100) // Agregue otra fila myDB.insert (" PERSONA "," NOMBRE "a" Jane Flores "," EDAD "a 32," NET_WORTH "a 21500.80," ID "a 101)

Finalment, per a consultar la base de dades, pot utilitzar el seleccionar() funció, seguida opcionalment per una cadena de funcions nomenades intuïtivament, com ara dondeSimple ()orderBy (), i agrupar por(). Per exemple, per enumerar els noms i edats de totes les persones a la taula anterior el valor net és més gran que 10000, Pots fer servir el següent codi:

myDB.select ("PERSON", "NAME", "AGE") .whereSimple ("NET_WORTH>?", "10000.0"). exec // Más código aquí

El resultat de la consulta anterior és, com es podria esperar, un Cursor objecte. Convertir-lo en un Lista que contingui valors de columna reals de totes les files és una mica més complicat perquè implica la creació d’un objecte que implementa el RowParser interfície i passant-lo a la parseList () funció.

els RowParser interfície té un sol mètode, el parseRow () Mètode, dins el qual tindràs accés als valors de columna d’una fila. Com fas servir els valors, per descomptat, depèn de tu. Per ara, només concatenem i imprimim. El següent codi mostra com fer-ho:

parseList (objeto: RowParseranular la diversión parseRow (columnas: Array): Cadena // Concatenar los valores de la primera y la segunda columnas, // que son NAME y AGE devuelven "$ columnas ($ columnas años)"). forEach println (it) // imprime los valores concatenados // El resultado es: // Jane Flores (32 años)

Tingueu en compte que no sempre ha de crear un RowParser Objecte manualment. Si els resultats de la seva consulta contenen només una columna, pot utilitzar un dels molts analitzadors integrats d’Anko.

Els noms dels analitzadors integrats es basen en els tipus de dades de les columnes. Per exemple, si el tipus de dades és TEXTO, pots fer servir un StringParser. O si el tipus de dades és ENTERO, pots fer servir un IntParser.El següent codi mostra com utilitzar un StringParser per simplement llistar els noms de totes les persones a la nostra base de dades :

myDB.select ("PERSON", "NAME"). exec parseList (StringParser) .forEach println (it) // El resultado es: // Bob Martin // Jane Flores

Conclusió

En aquest tutorial , vas aprendre a fer servir les funcions d’ajuda i DSL d’Anko per simplificar el desenvolupament d’aplicacions d’Android. També vas veure com Anko simplifica les operacions relacionades amb SQLite . Espero que ara es donen compte del que ben pensada i útil que és la biblioteca .. a

En la meva opinió, si ja ets competent en Kotlin , realment no hi ha raó per la qual no hagis de fer servir Anko per millorar encara més la teva eficiència i experiència de desenvolupament. Per aprendre més sobre això , referiu-vos a la vostra wiki oficial.

I mentre estàs aquí , fes un cop d’ull a algunes de les nostres altres publicacions sobre el desenvolupament d’aplicacions Kotlin i Android !

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *