Select Page

Naprogramuj si vlastnú Android aplikáciu v jazyku Kotlin

Jaroslav Beňo

10/09/2020

V tvojej prvej Android aplikácii v Kotlime si spravíme aplikáciu na hod kockou. Stalo sa ti, že si hral človeče a chýbala ti kocka? Teraz ti postačí tvoja android appka. Verím, že telefón budeš mať po ruke skôr ako kocku :).

Tlačidlo

Layout vieme písať aj ručne. Týmto spôsobom viem využiť dopĺňanie kódu pomocou android studia. Napríklad pri šírke vieme udať wrap_content nastavenie, ktoré mi šírku tlačidla prispôsobí obsahu tlačidla. Teda v tomto prípade tam bude text.

Pre button doplníme text a textu zadám hodnotu. Teraz tento riadok je vysvietený na žlto, čo naznačuje, že Android studio ti dáva informáciu, že našlo spôsob, ako spraviť tvoj kód lepším. V tomto prípade ti odporúča nedávať text priamo do layoutu ale do externého súboru.

K tejto pomôcke sa dostanem cez žltý žiarovku.

Text v externom súbore

Zvolíme exract string resource a nastavíme ďalšie okienko.


V res priečinku máme values priečinok, kde sa bude nachádzať súbor strings.xml a v tom súbore máme dané nastavenie textu.

<resources>
    <string name="app_name">Kocka</string>
    <string name="hod">Hoď kockou</string>
</resources>

Pozícia tlačidla

Teraz nastavíme kde sa má button zobraziť – na akom mieste v aplikácii. Teraz je na pozícii 0,0 lebo som nič nezadal.

K button nastavení pridáme pripojenie sa na okolité elementy.

app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />

Prístup k UI cez Kotlin

TextView nám netreba zmažeme.

Aby sme sa vedeli napojiť v kotlin kóde na daný button musíme mu pridať aj id.

<Button
    android:id="@+id/hodKockou"

V Kotlin kóde sa vieme k danému tlačidlu dostať pomocou metódy findViewById

val rollButton: Button = findViewById(R.id.hodKockou)

Alebo jednoduchším spôsobom si importnem všetko z layoutu:

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

A v kotlin kóde sa na daný button odkazujem pomocou id buttonu.

hodKockou.setText("Jaro")

Úprava hodnoty textu dynamicky a náhodné číslo

Pridám text na zobrazenie hodnoty hodu kockou:




<TextView
    android:id="@+id/hodnotaKocky"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello World!"
    app:layout_constraintBottom_toTopOf="@+id/hodKockou"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.498"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.947" />

Na button nastavíme onClickListener, ktorý spustí metódu hodKocku. V danej metód použijem Random triedu z javy (pozor na to).

private fun hodKocku() {
    val randomInt = Random().nextInt(6) + 1
    hodnotaKocky.setText(randomInt.toString())
}

Namiesto textu by sa nám hodil obrázok. Pre každú kocku si priprav jeden obrázok. Obrázok môže byť aj vektorová grafika uložená v xml.

Pridávame obrázok kocky

Prepneme sa na project view a obrázky vložíme do priečinku drawable. Viď obrázok.

Názvy musia obsahovať len malé písmená a-z, čísla 0-9, alebo podčiarkovník.

Ak je random číslo 1 tak nastavíme ako obrázok kocka1 a podobne.

private fun hodKocku() {
    val randomInt = Random().nextInt(6) + 1
    val obrazok = when(randomInt){
        1 -> R.drawable.kocka1
        2 -> R.drawable.kocka2
        3 -> R.drawable.kocka3
        4 -> R.drawable.kocka4
        5 -> R.drawable.kocka5
        else -> R.drawable.kocka6
    }
    kockaObrazok.setImageResource(obrazok)
}

Na UI pridáme ImageView a nastavíme mu umiestnenie na stred.

Nezabudneme na id.

<ImageView
    android:id="@+id/kockaObrazok"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:layout_constraintBottom_toTopOf="@+id/hodKockou"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    tools:srcCompat="@drawable/kocka1" />

Problém pri spustení simulátoru?

Spustíme simulátor a pozrieme is výsledok.

Ak máš problém so spustením simulátoru. Nenaštartuje sa v ňom android, tak:

V nastaveniach Actions stlač Wipe Data a potom Cold Boot Now. Teraz by sa ti malo zariadenie rozbehnúť.

Výsledok

Naša aplikácia teraz funguje správne.

Najnovšie články

O autorovi: Jaroslav Beňo

Jaro je v skratke kresťan, manžel, otec a programátor. Na tomto webe sa venuje programovaniu. Jeho túžbou je šíriť vedomosti ďalej, aby sme mohli spolu rásť.

Pripravil viacero online video kurzov. Jeho sociálne siete:

Podobné články

Kotlin extension functions

Predstav si, že chceš manipulovať so stringom. Máš text, ktorý chceš upraviť, napríklad každé druhé písmeno chceš dať veľkým písmenom. Každé prvé bude malým. Máš takúto metódu v Stringu? Nie. Teda nie je možné zavolať napríklad: "Lorem ipsum dolor sit amet,...

Kotlin funkcie

Ak je funkcia vo vnútri triedy, tak sa označuje ako metóda alebo member funkcia – ale je to v podstate jedno. Začíname so slovom fun. Potom ide názov a nasledujú argumenty. Ak metóda nič nevracia, tak na pozadí vracia typ Unit. Ak metóda vracia nejakú...

Kotlin Data class

Ak potrebuješ uchovávať stav aplikácie. Teda máš premenné a potrebuješ ich nastavovať a získavať ich hodnoty, tak vieš použiť Data class. Máme triedu Auto: class Auto (val nazov: String, val pocetDveri: Int = 4) { } Ako z nej spravím data class?...

Kotlin triedy a konštruktory

Trieda slúži na opis a výrobu objektov. Skúsme porozmýšľať nad reálnym objektom – napríklad auto. Ak chceme opísať auto do programu, tak na opis auta použijeme triedu. Čo má auto? Aké vlastnosti? Má počet dverí, značku, ečv, objem kufra a ďalších xy vecí. Nie...

Kotlin range

Range ako názov hovorí je rozpätie hodnôt. V tomto článku sa pozrieme na to ako Kotlin pracuje s range. Poďme sa pozrieť na príklady. Použitie v podmienke: if (i in 1..4) { // equivalent of 1 <= i && i <= 4 print(i) } Prechádzanie cez hodnoty rangu:...

Kotlin dátové typy

Java a Kotlin sú zameniteľné jazyky. Vieš ich obidva použiť v jednom programe, pretože nakoniec z nich bude .class súbor. Tým pádom typy, ktoré pozná Kotlin, pozná aj Java. Sú rozdiely, ktoré už vieš. Nevieš napísať typ int, ale vieš ho používať...

Kotlin String templates

Pri vypisovaní textu často ku textu pridávame hodnoty z premenných. Spájanie Stringov vieme spraviť pomocou + kde pospájame hodnoty a Stringy: for((i, v) in mena.withIndex()){ print("" + i + " " + v + "\n") } Kotlin ale má krajšiu cestu: for((i, v) in...

Kotlin for cyklus

Cyklus alebo loop znamená, že niečo sa opakuje xy krát. Možno prechádzame čísla od 1 do 100, alebo prechádzame cez elementy v poli alebo liste. V tomto článku sa dozvieš ako použiť for cyklus. Predstav si, že chceš vypísať čísla od 0 do 10. Použijeme for cyklus...

Kotlin polia

Pole je zoskupenie jeden a viac prvkov. Na vytvorenie poľa použijeme funkciu arrayOf. Do pola môžeme dať hodnoty rôzneho typu. val mena = arrayOf("Jaro", "Peter"); val rozne = arrayOf("Jaro", 10, Osoba("Tomas", "145878/8787"), false, "Peter"); Aj miešame typy...

Kotlin when

Predstav si, že napíšeš aplikáciu, kde používateľ bude čítať dáta z konzoly, ak niečo zadá, tak sa má niečo vykonať, ak zadá niečo iné, tak sa vykoná niečo iné. Napríklad budeš mať aplikáciu, kde používateľ bude vyberať smer kade má ísť. Ak napíše SEVER, tak na...

Share This

Páčil sa ti článok? Zváž zdieľanie. Ďakujeme.