Používateľské rozhranie

Používateľské rozhranie v Androide vytvárame v samostatných súboroch vo formáte XML. Tieto súbory sa ukladajú do adresára res-> layout.

Alternatívou môže byť vytváranie dynamických inštancií v kóde. Táto možnosť sa používa príležitostne, napr. ak potrebujeme vyplniť tabuľky na základe informácií získaných z internetovej stránky.

Každý súbor XML obsahuje strom elementov, ktoré definujú rozloženie widgetov. Elementy XML obsahujú atribúty, ktoré definujú vlastnosti widgetov, napr. atribút text, widgetu Button nastavuje text, ktorý sa zobrazí na tlačidle.

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Tlačidlo ahoj"/>

V prípade, že by sme chceli nastaviť text priamo v kóde a nie v XML súbore, zavolali by sme metódu setText() na inštancií príslušného tlačidla.

JAVA:
Button mButton=findViewById(R.id.button);
mButton.setText("Tlačidlo");
KOTLIN:

val button = findViewById<Button>(R.id.button) 

button?.setText("Tlačidlo")

Alternatívou k vyššie uvedeným príkladom je použitie nástrojov pre tvorbu používateľského rozhrania – v Android Studio nástroj Design alebo si stiahnuť samostatný nástroj DroidDraw (alebo iné nástroje). Tieto nástroje pracujú na princípe drag-and-drop (potiahni a pusti) – z palety nástrojov si vyberieme widgety, ktoré chceme používať a presunieme ich do okna obrazovky. Nástroj DroidDraw je samostatný nástroj, ktorý vie vygenerovať XML kód, ktorý následne nakopírujeme do nášho súboru XML so vzhľadom.

Hierarchia používateľského rozhrania

Používateľské rozhranie aktivity môžeme definovať pomocou dvoch tried View a ViewGroup. Hierarchiu stromu určuje vývojár.

View
- základná komponenta, ktorá predstavuje určitú časť na obrazovke a je zodpovedná za vykresľovanie a spracovanie udalostí
- základná trieda pre widgety, ktoré sa používajú pri tvorbe používateľského rozhrania (napr. tlačidlo, zoznam, atď.)

ViewGroup
- trieda ViewGroup predstavuje neviditeľný kontajner, ktorý v sebe uchováva ďalšie kontajnery alebo iné triedy typu View.
- základná trieda pre layout-y:

  • LinearLayout
  • RelativeLayout
  • AbsolutLayout
  • TableLayout
  • GridLayout
  • FrameLayout
  • ConstraintLayout


Priraďenie používateľského rozhrania k aktivite

Keď chceme prepojiť naše vytvorené používateľské rozhranie (napr. XML súbor activity_main.xml v adresáry res/layout) s aktivitou (zdrojovým kódom Java) zavoláme nasledujúci príkaz v metóde onCreate():

JAVA:

setContentView(R.layout.activity_main);

KOTLIN:

setContentView(R.layout.activity_main)

  • Metóda setContentView() nastavuje vzhľad activity.
  • R – predstavuje automaticky vygenerovanú triedu zo zdrojového kódu. Obsahuje definície všetkých zdrojov v aplikácií. Vždy, keď sa vytvorí alebo sa zmení súbor so vzhľadom, Android Studio vygeneruje nanovo túto triedu.
  • R.layout.* - odkazy na všetky súbory s layout-ami v adresáry /res/layout
  • R.layout.activity_main je static final int premenná, ktorá reprezentuje ID layout-súboru v activity_main.xml

Príklad

Súbor activity_main.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:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="p_v.prvyprojekt1.MainActivity">

</RelativeLayout>

 Aktivita, ktorá používa vzhľad zo súboru activity_main.xml

 public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
     }
}

KOTLIN:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}