Coding Funcțional Apps Android în Kotlin Noțiuni de bază

În timp ce marea majoritate a aplicațiilor Android sunt scrise în Java, nu există nicio regulă pe care să o aveți avea pentru a utiliza Java pentru dezvoltarea Android. Există o varietate de limbi moderne de programare care sunt proiectate să ruleze pe Java Virtual Machine (JVM), iar una dintre aceste limbi care devine populară în comunitatea Java este Kotlin. 

În prima parte a acestei serii de trei părți, ne-am uitat la ceea ce este Kotlin și ce oferă dezvoltatorilor Android:

  • Este 100% interschimbabil cu Java, până la punctul în care puteți continua să utilizați bibliotecile și cadrele Java existente și puteți chiar utiliza un amestec de cod Java și Kotlin în proiectele Android. 
  • Sintaxa sa este concepută pentru a se simți foarte asemănătoare cu Java, ceea ce înseamnă că ar trebui să fie destul de ușor pentru dezvoltatorii Java să se ocupe de fundamentele lui Kotlin.
  • Combină caracteristici și concepte atât din programarea funcțională, cât și din cea procedurală.
  • Este bine susținută de Android Studio. 

În acest tutorial de urmărire, vom începe să dezvoltăm o anumită dezvoltare a companiei Kotlin. În momentul în care ajungeți la sfârșitul tutorialului, veți crea o aplicație Android simplă care afișează o linie de text și este scrisă în întregime în Kotlin. Veți ști, de asemenea, cum să evitați vreodată să scrieți altul findViewById, prin utilizarea extensiilor Android ale lui Kotlin.

Dar, mai întâi, este timpul să ne învățăm mediul de dezvoltare cum să vorbim o nouă limbă!  

Instalarea plug-in-ului Kotlin în Android Studio

Primul lucru pe care trebuie să îl faceți este să adăugați asistență Kotlin instalării dvs. Android Studio.

Înainte de a începe, asigurați-vă că rulați cea mai recentă versiune stabilă a aplicației Android Studio, deoarece este mai probabil să întâlniți bug-uri cu pluginul Kotlin pe versiunile experimentale de Android Studio. De asemenea, merită să deschideți Managerul SDK și să verificați dacă sunt disponibile actualizări pentru oricare dintre pachetele pe care le-ați instalat.

Odată ce sunteți încrezător că mediul dvs. de dezvoltare este actualizat, sunteți gata să instalați pluginul Kotlin. Lansați Android Studio și ar trebui să vedeți Bine ați venit la Android Studio fereastră - dacă această fereastră nu apare, închideți complet Android Studio și relansați-o.

Dă-i Configurarea pictograma un clic, apoi selectați Plugin-uri din dropdown ulterior.

Apasă pe Instalați pluginurile JetBrains ... buton.

Selectați Kotlin din meniu, apoi faceți clic pe verde Instalare buton. Va trebui să reporniți IDE-ul înainte ca plugin-ul Kotlin să devină activ, deci fie faceți clic pe Reporniți Android Studio care apare sau reporniți manual IDE-ul.

Configurarea proiectului dvs. pentru utilizarea lui Kotlin

În acest moment, IDE-ul dvs. poate înțelege și executa codul Kotlin, dar va trebui totuși să configurați Kotlin de fiecare dată când doriți să îl utilizați într-un nou proiect. Să creați un nou proiect și să configurați acest proiect pentru a folosi acum Kotlin. Creați un nou proiect cu setările alese de dvs., dar, din motive de simplitate, selectați Activitate goală când vi se solicită.

Datorită pluginului Kotlin, configurarea unui proiect de utilizare a lui Kotlin nu ar putea fi mai simplă: trebuie doar să selectați Unelte din bara de instrumente Android Studio, urmată de Kotlin și Configurați Kotlin în proiect.

Aceasta deschide un popup unde puteți alege să configurați Kotlin pentru:

  • toate modulele
  • toate modulele conținând fișiere Kotlin
  • sau un singur modul numit

De când sunt numai să folosesc codul Kotlin în proiectul meu, am optat pentru asta Toate modulele. De asemenea, puteți alege ce versiune de Kotlin doriți să folosiți - de obicei, aceasta va fi ultima versiune.  

Alternativ, puteți configura modulul Kotlin selectând Ajutor din bara de meniu Android Studio, urmată de Găsiți acțiune ... În Găsiți acțiune bar, începeți să tastați Configurați Kotlin în proiect, apoi selectați această opțiune când apare.

Configurați Kotlin în proiect opțiunea face o serie de trucuri pentru proiectul dvs. build.gradle fișiere, deci hai să examinăm mai atent modul în care aceste fișiere s-au schimbat. Deschideți nivelul proiectului build.gradle fișier-ar trebui să arate cam așa:

buildscript // Declară versiunea de Kotlin pe care o utilizați. Veți observa că versiunea lui Kotlin este menționată atât în ​​clasa de clasă construită, cât și în dependențele de compilare ale proiectului dvs. - numărul versiunii trebuie să fie același în ambele locații // ext.kotlin_version = '1.0.5-2' repositories jcenter ( ) dependences classpath 'com.android.tools.build:gradle:2.2.2' // Declară pluginul Kotlin Gradle ca dependență de clasă // classpath 'org.jetbrains.kotlin: kotlin-gradle-plugin: $ kotlin_version "  allprojects arhive jcenter () 

Acum, să aruncăm o privire la nivelul dvs. de module build.gradle fişier:

aplicați plugin-ul: 'com.android.application' // se aplică plugin-ul Kotlin Android // aplicați pluginul: 'kotlin-android' android compileSdkVersion 25 buildToolsVersion "24.0.0" defaultConfig applicationId "com.jessicathornsby.kotlinexample" minSdkVersion 21 targetSdkVersion 25 versionCode 1 versionName "1.0" buildTypes release minifyEnabled false proguardFiles getDefaultProguardFile ('proguard-android.txt'), 'proguard-rules.pro' // Deși Gradle va compila fișiere Kotlin pe care le găsește în src / main / java, este o bună practică să stocați fișierele Kotlin într-un director dedicat Kotlin. Aici puteți vedea că pluginul Kotlin a adăugat o declarație src / main / kotlin pentru a construi.grada, dar rețineți că nu a creat efectiv acest director, așa că vom crea mai târziu în acest articol // sourceSets  main.java.srcDirs + = 'src / main / kotlin' dependente compile fileTree (dir: 'libs', include: ['* .jar']) androidTestCompile ('com.android.support.test.espresso: espresso-core: 2.2.2 ', exclude grup:' com.android.support ', modul:' support-adnotations ') compile' com.android.support:appcompat-v7:25.0.1 'testCompile' junit: junit: 4.12 '// adaugă Biblioteca Standard Kotlin ca dependență de proiect // compilați fișierele org.jetbrains.kotlin: kotlin-stdlib: $ kotlin_version mavenCentral ()

În cele din urmă, sincronizați modificările fie făcând clic pe Sincronizați acum din popupul care apare sau făcând clic pe Proiect de sincronizare cu fișiere Gradle pictograma din bara de instrumente Android Studio.

Convertiți orice fișier Java în Kotlin

O caracteristică a plug-in-ului Kotlin, care este deosebit de util pentru noii veniți Kotlin, este capacitatea sa de a converti orice fișier Java sursă în Kotlin, menținând în același timp o compatibilitate completă în timp real.

Fiind capabil să vadă exact cum orice Fișierul Java se va traduce în Kotlin este ideal pentru a vă ajuta să învățați limba, dar poate fi de asemenea utilă pe parcursul călătoriei dumneavoastră în Kotlin - dacă vă străduiți vreodată să scrieți ceva în Kotlin, puteți scrie întotdeauna în Java și apoi utilizați această caracteristică pentru a converti acel cod în Kotlin.

Să transformăm proiectul nostru Activitate principala fișier într-un fișier sursă Kotlin. Există două moduri de invocare a pluginului Kotlin Convertiți fișierul Java în fișierul Kotlin acțiune, deci fie:

  • Selectați-vă Activitate principala fișier, apoi selectați Cod din bara de meniu Android Studio, urmată de Convertiți fișierul Java în fișierul Kotlin.

  • Sau selectați Ajutor din bara de meniu Android Studio, urmată de Găsiți acțiune. În popup ulterior, începeți să tastați Convertiți fișierul Java în fișierul Kotlin apoi selectați această opțiune când apare. Notați, de asemenea, puteți lansa Găsiți acțiune popup cu o comandă rapidă de la tastatură: dacă sunteți pe Mac, apăsați pe Command-Shift-A chei, iar dacă sunteți pe Windows sau Linux, apăsați Control-Shift-A.

Trebuie doar să țineți cont de faptul că, în funcție de complexitatea codului dvs., este posibil ca conversia să nu fie întotdeauna exactă la 100%, deci trebuie să verificați întotdeauna codul dvs. convertit pentru erori.

Dvs. recent convertit Activitate principala ar trebui să arate ceva de genul:

importați android.support.v7.app.AppCompatActivity importați android.os.Bundle class MainActivity: AppCompatActivity () override fun onCreate (savedInstanceState: Bundle?) super.onCreate (savedInstanceState) setContentView (R.layout.activity_main)

Veți observa, de asemenea, că extensia fișierului sa schimbat, transformându-vă de la MainActivity.java la MainActivity.kt.

Acest lucru poate fi simplu Activitate, dar aceste câteva linii ilustrează câteva caracteristici cheie ale sintaxei Kotlin. Deoarece aceasta este prima noastra privire la un cod actual al lui Kotlin, sa alegem aceasta clasa separata de linie.

Înțelegerea sintaxei Kotlin

În Kotlin, declarați clase utilizând cuvântul cheie clasă, exact ca în Java. Cu toate acestea, în Kotlin, clasele (și metodele) sunt publice și finale în mod implicit, astfel încât să puteți crea o clasă pur și simplu prin scriere clasa MainActivity.

Când vine vorba de extinderea unei clase, înlocuiți Java extinde cu un colon, apoi atașați numele clasei părinte. Deci, în primul rând al nostru MainActivity.kt dosar, vom crea o clasă publică, numită Activitate principala care se extinde AppCompatActivity:

class MainActivity: AppCompatActivity () 

Echivalentul în Java ar fi:

clasa publica MainActivity extinde AppCompatActivity 

Dacă doriți să înlocuiți o clasă sau o metodă, atunci va trebui să o declarați în mod explicit ca fiind deschisă sau abstractă.

În Kotlin, funcțiile sunt definite folosind distracţie cuvânt cheie, urmat de numele funcției și parametrii din paranteze. În Kotlin, numele funcției vine înaintea tipului său:

suprascrie fun onCreate (savedInstanceState: Bundle?) 

Acesta este opusul Java, unde tipul precede numele:

public void onCreate (Bundle savedInstanceState)

Rețineți că nu specificăm faptul că această metodă este definitivă, la fel ca în Kotlin, toate metodele sunt definitive în mod implicit.

Restul acestei activități arată destul de similar cu Java. Totuși, aceste câteva linii ilustrează o altă caracteristică cheie a lui Kotlin:

super.onCreate (savedInstanceState) setContentView (R.layout.activity_main)

În Kotlin, nu nevoie pentru a vă termina liniile cu punct și virgulă, prin urmare, lipsa de coloni în fragmentul de mai sus. Poți adăuga colonii dacă vrei cu adevărat, dar codul tău va fi mai curat și mai ușor de citit fără ei.

Acum că am descifrat-o pe noi MainActivity.kt fișier, să-l mutăm în casa sa. Deoarece pluginul Kotlin a intrat în dificultatea de a adăuga o src / main / Kotlin declarația noastră build.gradle fișier, să creați de fapt acest director. Acest pas nu este obligatoriu, dar păstrarea fișierelor Kotlin într-un director dedicat va face pentru un proiect mult mai curat.

În Android Studio Proiect Explorer, Control-clic proiectul tău Principal și selectați Nou din meniul care apare, urmat de Director. Denumiți acest director Kotlin apoi faceți clic pe O.K.

Dacă vă străduiți să vedeți proiectul dvs. principal director, apoi deschideți meniul derulant mic din partea stângă sus a paginii Proiect Explorer și selectați Proiect. Ar trebui să nu aveți nici o problemă la fața locului src / main director.

Odată ce ați creat un dedicat Kotlin director, glisați-vă MainActivity.kt fișier în ea. Doar asigurați-vă că vă păstrați MainActivity.kt numele fișierului existent al fișierului, astfel încât proiectul să fie încă rulat.

De asemenea, dacă veți folosi doar Kotlin în acest proiect, atunci este posibil să doriți să ștergeți Java director, mai degrabă decât aglomerarea proiectului dvs. cu directoare goale și inutile.

Întrucât Kotlin se compilează la octet, o aplicație scrisă în Kotlin se simte exact ca o aplicație scrisă în Java, deci încercați să instalați această aplicație pe dispozitivul dvs. Android sau pe un AVD compatibil - ar trebui să se simtă ca și cum nimic nu s-ar fi schimbat.

Crearea fișierelor Extra Kotlin

Dacă veți continua să lucrați cu Kotlin în proiectul dvs., mai devreme sau mai târziu va trebui să începeți să creați noi fișiere Kotlin, decât să transformați pur și simplu cele existente în Java.

Pentru a crea un fișier Kotlin, Control-clic ta app / src / main / Kotlin și selectați Nou> Activitatea Kotlin.

Oferiți clasei dvs. un nume și selectați clasă din meniul derulant. Noua dvs. clasă ar trebui să arate cam așa:

class SecondActivity 

În acest moment, activitatea dvs. este goală. Pentru a ajunge la punctul în care puteți începe adăugarea unor funcționalități reale, va trebui să finalizați câțiva pași. Mai întâi, adăugați import declarațiile pe care doriți să le utilizați. Singura diferență dintre declarațiile de import în Kotlin și declarațiile de import în Java este că nu trebuie să terminați fiecare linie cu punct și virgulă. De exemplu:

importați android.app.Activitatea de import android.os.Bundle import android.app.Activity

Apoi, va trebui să specificați clasa pe care o extindeți, utilizând același format pe care l-am văzut la noi MainActivity.kt fişier:

class SecondActivity: Activitate () 

În continuare, trebuie să suprascrieți activitățile onCreate metodă:

suprascrie distracția onCreate (savedInstanceState: Bundle?) super.onCreate (savedInstanceState)

Acum puteți adăuga orice funcționalitate dorită la această Activitate (și în următoarea secțiune, vă vom arăta cum să utilizați extensiile Kotlin pentru a manipula widget-urile UI, deci ar fi un loc bun pentru a începe), dar un ultim bit de configurare pe care trebuie să o finalizați, vă declară activitatea Kotlin în cadrul dvs. Manifesta. Aceasta urmează exact aceeași formulă ca și declararea unei noi activități Java, de exemplu:

   

Kotlin Android Extensii: Wave La revedere findViewById

Acum, că am învățat elementele de bază, să aruncăm o privire mai atentă la ceea ce este Kotlin într-adevăr capabilă să pornească de la o caracteristică care poate reduce cu adevărat cantitatea de cod de boilerplate pe care trebuie să o scrieți.

În Android, de fiecare dată când doriți să lucrați cu orice Vedere în cadrul unei activități, trebuie să utilizați findViewById pentru a obține o referință la acea vizualizare. Asta face findViewById unul dintre cei mai importanți, dar și unul dintre cei mai frustranți biți de cod pe care îi veți găsi în scris și repetat și peste din nou în proiectele Android. findViewById este o sursă imensă de erori potențiale și dacă lucrați cu mai multe elemente de interfață în aceeași activitate, atunci toate acestea findViewByIds poate dezordine cu adevărat codul dvs., ceea ce face dificil de citit.

În timp ce există un număr de biblioteci, cum ar fi Butter Knife, care vizează eliminarea nevoii findViewByIds, aceste biblioteci încă necesită să vă adnotați câmpurile pentru fiecare vizualizare, ceea ce poate duce la greșeli și se dovedește încă o mulțime de eforturi care ar fi mai bine investite în alte domenii ale proiectului dvs..  

Plugin-ul Kotlin Android Extensions (care a fost recent încorporat în plugin-ul standard Kotlin) promite să facă findViewById un lucru din trecut, oferindu-vă beneficiile bibliotecilor menționate mai sus, fără a avea dezavantajul că trebuie să scrieți orice cod suplimentar sau să expediați o durată de execuție suplimentară.

Puteți utiliza extensiile Kotlin pentru a le importa Vedere referințe în fișierele sursă. În acest moment pluginul Kotlin va crea un set de "proprietăți sintetice" care vă vor permite să lucrați cu aceste vizualizări ca și cum acestea ar fi parte din activitatea dvs. - în mod crucial, aceasta înseamnă că nu mai trebuie să utilizați findViewById pentru a localiza fiecare Vedere înainte de a putea lucra cu el.

Pentru a utiliza extensiile, va trebui să activați pluginul Kotlin Android Extensions în fiecare modul, astfel încât să vă deschideți nivelul modulului build.gradle fișier și adăugați următoarele:

aplicați plugin-ul: 'kotlin-android-extensions'

Sincronizați aceste modificări făcând clic pe Sincronizați acum Pop-up. 

Apoi puteți importa referințele la un singur Vedere, utilizând următorul format:

import kotlinx.android.synthetic.main..

De exemplu, dacă dvs. acitivity_main.xml fișierul conținea TextView cu ID-ul textView1, atunci ați importa referința la această vizualizare adăugând următoarele la dvs. Activitate:

importul kotlinx.android.synthetic.main.activity_main.textView1

Apoi ați putea accesa textView1 în cadrul acestei activități, utilizându-se numai ID - și fără a findViewById în vedere!

Să aruncăm o privire la extensiile în acțiune, adăugând o TextView pentru noi activity_main.xml fișier, importându-l în MainActivity.kt fișier și utilizând extensii pentru a seta TextViewtextul programabil.  

Începeți prin a vă crea TextView:

   

Apoi puteți importa TextView în tine MainActivity.kt, și setați textul numai cu ajutorul codului său de identificare:

importați android.support.v7.app.AppCompatActivity importați șiroid.os.Bundle import kotlinx.android.synthetic.main.activity_main.myTextView class MainActivity: AppCompatActivity () suprascris fun onCreate (savedInstanceState: Bundle?) super.onCreate (savedInstanceState ) setContentView (R.layout.activity_main) myTextView.setText ("Hello World")

Rețineți că, dacă doriți să lucrați cu mai multe widgeturi din același fișier de aspect, puteți importa întregul conținut dintr-un fișier de aspect într-o singură lovitură, utilizând următoarea formulă:

import kotlinx.android.synthetic.main..*

De exemplu, dacă doriți să importați toate widgeturile de pe dvs. activity_main.xml fișier, atunci ați adăuga următoarele la activitatea dvs.:

kotlinx.android.synthetic.main.activity_main. *. 

Concluzie

În această a doua tranșă am acoperit configurarea mediului de dezvoltare pentru a sprijini Kotlin și ne-am uitat la cât de ușor este să convertiți codul Java existent în Kotlin. De asemenea, am analizat unele dintre caracteristicile majore ale sintaxei Kotlin și am introdus extensiile Android Kotlin în proiectul nostru. 

În cea de-a treia și ultima tranșă, vom analiza câteva caracteristici mai avansate ale limbajului Kotlin, care, în calitate de dezvoltator Android, ar trebui să găsească în mod special util.

  • Înțelegerea concordanței pe Android utilizând HaMeR

    În acest tutorial vom explora cadrul HaMeR (Handler, Message and Runnable), unul dintre cele mai puternice modele de concurență disponibile pe Android. Tu o să ...
    Tin Megali
    Android SDK
  • Începeți cu Firebase pentru Android

    Crearea unui server back-end necesită un set de competențe pe care majoritatea dezvoltatorilor independenți de aplicații le lipsește. Din fericire, există Firebase, o platformă bazată pe cloud care ...
    Ashraff Hathibelagal
    Android SDK
  • Android de la zero: senzori hardware

    Unul dintre lucrurile care face ca dezvoltarea pentru dispozitive mobile să fie diferită de alte platforme este că un telefon mobil sau o tabletă este plină de senzori și ...
    Paul Trebilcox-Ruiz
    Android SDK
  • Începeți cu un șablon de aplicație Android în 60 de secunde

    CodeCanyon are sute de șabloane de aplicații Android pe care le puteți utiliza pentru a vă lansa dezvoltarea. Acest videoclip vă va arăta cum să instalați și să personalizați ...
    Ashraff Hathibelagal
    Android SDK
  • Faceți fotografii cu aplicația dvs. Android

    Magazinul Google Play are zeci de aplicații pentru camere - fiecare dintre ele permițând un alt mod de a face fotografii sau de a face ceva unic cu imaginile din ...
    Ashraff Hathibelagal
    Android SDK
  • Concurs practic pe Android cu HaMeR

    În acest tutorial vom explora cadrul HaMeR (Handler, Message and Runnable), unul dintre cele mai puternice modele de concurență disponibile pe Android. Cu…
    Tin Megali
    Android SDK
Cod