|
|
# Oživenie užívateľského rozhrania
|
|
|
|
|
|
## Aktivita
|
|
|
|
|
|
- mozog, hlavná časť aplikácie
|
|
|
- používa layout, nastaví jeho vykreslenie
|
|
|
- v metódach definuje čo sa kedy vykoná (pri spustení, pri zavretí, pri rotácii obrazovky, atď.)
|
|
|
- [úvod o aktvitách](https://developer.android.com/guide/components/activities/intro-activities)
|
|
|
- _AndroidManifest.xml_ - definuje všetky aktivity, ktoré sa používajú a ktorou aktivitou sa začína
|
|
|
- [životný cyklus aktivity](https://developer.android.com/guide/components/activities/activity-lifecycle)
|
|
|
- [upravený cyklus](https://i.stack.imgur.com/VW8m8.jpg)
|
|
|
- _onCreate_ - vytváram aktivitu, nastavujem čo sa zobrazí, vytvorím nutné objekty; nikto zatiaľ nič nevidí
|
|
|
- _onStart_ - po tejto metóde sa aktivita zobrazí užívateľovi
|
|
|
- _onStop_ - po zavolaní tejto metódy sa aktivita skryje
|
|
|
- _onDestroy_ - uvoľní zdroje aktivity, t.j. "zničí" vytvorené objekty
|
|
|
|
|
|
## Prepojenie s XML layoutom
|
|
|
|
|
|
Vytvorím aktivitu:
|
|
|
|
|
|
```kotlin
|
|
|
import androidx.appcompat.app.AppCompatActivity
|
|
|
import android.os.Bundle
|
|
|
|
|
|
class MainActivity : AppCompatActivity() {
|
|
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
|
super.onCreate(savedInstanceState)
|
|
|
setContentView(R.layout.activity_main)
|
|
|
}
|
|
|
}
|
|
|
```
|
|
|
|
|
|
- `savedInstanceState: Bundle?` - nemusí ma trápiť, objekt obsahuje hodnoty predošlého stavu, ktoré si môžem uložiť a potom odtiaľto získať; pri prvom vytvorení je `null`
|
|
|
- `super.onCreate` - zavolám metódu predka, keďže dedím, musím ju použiť
|
|
|
- `setContentView(R.layout.activity_main)` - nastavím layout; použije sa _res/layout/activity\_main.xml_
|
|
|
|
|
|
#### Úloha 1
|
|
|
|
|
|
- nakopíruj následujúce XML do _activity\_main.xml_
|
|
|
- `android:padding` definuje, ako ďaleko má byť dané _View_ od kraja
|
|
|
- `tools:...` rieši pomocné veci pre AndroidStudio a programátora, nie je to podstatné
|
|
|
|
|
|
```xml
|
|
|
<?xml version="1.0" encoding="utf-8"?>
|
|
|
<RelativeLayout
|
|
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
|
|
xmlns:tools="http://schemas.android.com/tools"
|
|
|
android:layout_width="match_parent"
|
|
|
android:layout_height="match_parent"
|
|
|
android:padding="10dp"
|
|
|
tools:ignore="HardcodedText"
|
|
|
tools:context=".MainActivity">
|
|
|
|
|
|
<TextView
|
|
|
android:id="@+id/write_text_message"
|
|
|
android:layout_width="wrap_content"
|
|
|
android:layout_height="wrap_content"
|
|
|
android:padding="5dp"
|
|
|
android:text="Text message"/>
|
|
|
|
|
|
<EditText
|
|
|
android:id="@+id/editable_thing"
|
|
|
android:layout_width="match_parent"
|
|
|
android:layout_height="wrap_content"
|
|
|
android:layout_toEndOf="@id/write_text_message"
|
|
|
android:layout_toStartOf="@+id/ok_button"/>
|
|
|
|
|
|
<Button
|
|
|
android:id="@+id/ok_button"
|
|
|
android:layout_alignParentEnd="true"
|
|
|
android:layout_width="wrap_content"
|
|
|
android:layout_height="wrap_content"
|
|
|
android:text="OK"/>
|
|
|
|
|
|
</RelativeLayout>
|
|
|
```
|
|
|
|
|
|
1. V aktivite zavolaj metódu `this.findViewById<TextView>(R.id.id_of_the_view)`, ktorá nájde dané view podľa id
|
|
|
- jej výstup nastav do premennej
|
|
|
- premenná má atribút **text**; nastav ho na _Napíš nejaký text:_
|
|
|
- spusti a over či to naozaj funguje
|
|
|
2. Nastav **hint** atribút v _EditText_ view s id _R.id.editable_thing_
|
|
|
|
|
|
## Úloha 2
|
|
|
|
|
|
Pri kliknutí tlačítka OK sa zobrazí text, ktorý obsahuje edit text hodnotu.
|
|
|
|
|
|
1. Pridaj do XML _TextView_, ktoré má:
|
|
|
- id _output_text_
|
|
|
- jeho veľkosť je minimálna možná
|
|
|
- nachádza sa **v strede** pod _@id/editable_thing_
|
|
|
2. V aktivite:
|
|
|
- vytvor premenné typu _TextView_ pre _output_text_ a _Button_ _ok_button_
|
|
|
- _Button_ má metódu _setOnClickListener_, ktorá vykoná kód v zátvorkách vždy, keď sa na tlačítko klikne:
|
|
|
- pri kliknutí tlačítka sa output text nastaví na editable thing text.
|
|
|
```kotlin
|
|
|
okButton.setOnClickListener {
|
|
|
// You clicked the button, what should I do?
|
|
|
}
|
|
|
``` |
|
|
\ No newline at end of file |