Upozornenia pop-up správy

V niektorých situáciach potrebujeme upozorniť používateľa na nejaké činnosti. Napríklad, keď príde SMS správa, chceme používateľa upozorniť, že mu prišla nová správa. V tomto prípade je vhodné, ak sa bude správa zobrazovať na obrazovke, pokiaľ ju používateľ neprečíta, alebo neukončí toto upozornenie. V iných prípadoch, budeme chcieť aby správa oznámila dokončenie nejakej činnosti a zmizla z obrazovky bez toho, aby musel niečo používateľ urobiť. Príkladom takejto správy je odoslanie emailu – používateľ odošle email a následne sa zobrazí na pár sekúnd správa „Email bol odoslaný“.

Pop-up správy rozdeľujeme na

  • toast oznámenia
  • oznámenia v stavovom riadku
  • oznámenia v dialógovom okne

Toast oznámenia

Toast oznámenia sa vytvoria pomocou triedy Toast. Upozornenia sa zobrazia na pár sekúnd a následne sami zmiznú. Oznámenia obsahujú text, ktorý vypĺňa minimálny priestor v okne. Používateľ nereaguje na takéto správy.

Toast dialóg sa vytvorí zavolaním metódy makeText(). Táto metóda obsahuje tri parametre, prvý parameter predstavuje inštanciu triedy Activity (napr. kľúčové slovo this), druhý parameter je textová správa a posledný parameter nastavuje čas, počas ktorého bude toast zobrazený. Okrem zavolania metódy makeText(), musíme ešte zavolať metódu show(), ktorá zobrazí dialóg.

JAVA:
Toast.makeText(this, "Toto je ukážka to ast oznámenia", Toast.LENGTH_LONG).show();

Kotlin:

Toast.makeText(applicationContext,"this is toast message",Toast.LENGTH_SHORT).show() 

Dialóg môže byť zobrazený na obrazovke krátko alebo dlho – konštanty Toast.LENGTH_LONG alebo Toast.LENGTH_SHORT.

Toast s vlastným vzhľadom

 Ak sa nám nepáči vzhľad prednastaveného toast oznámenia, môžeme si vytvoriť vlastný vzhľad.

 

Vytvoríme si nový layout súbor, ktorý si nazveme napríklad vlastny_toast.xml:

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#7777">
    <ImageView
        android:id="@+id/obrazok1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/ic_launcher"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="úloha bola dokončená"
        android:layout_toRightOf="@id/obrazok1"
        android:layout_centerInParent="true"
        />

</RelativeLayout>

 V aktivite si vytvoríme inštanciu triedy Toast a nastavíme mu umiestnenie, dobu zobrazenia a pomocou metódy setView() mu nastavíme vzhľad nášho layout:

Toast toast = new Toast(this);
toast.setGravity(Gravity.CENTER,0,0);
toast.setDuration(Toast.LENGTH_SHORT);
toast.setView(getLayoutInflater().inflate(R.layout.vlastny_toast,null));
toast.show();

Upozornenia v dialógovom okne

Na rozdiel od toast oznámení, upozornenia v dialógovom okne zmiznú z obrazovky iba vtedy, keď používateľ stlačí tlačidlo. Inštancia triedy AlertDialog sa spustí, deaktivuje sa aktívna aktivita, zostane na obrazovke, kým ju používateľ neukončí manuálne (stlačením tlačidla). Tento druh správ sa používa, keď chceme upozorniť používateľa na nejakú závažnú chybu, alebo chceme, aby po stlačení tlačidla vykonal nejakú funkciu.

 Na vytvorenie takéhoto dialógového okna potrebujeme triedu Builder, ktorá obsahuje metódy, pomocou ktorých vytvoríme dialógové okno:

metóda

popis

setTitle()

nastaví titulok v dialógovom okne

setMessage()

nastaví text v dialógu

setIcon()

ikonka v dialógovom okne

setPositiveButton()

definuje metódu, ktorá sa vykoná po kliknutí na toto tlačidlo, ktoré reprezentuje napr. áno

setNegativeButton()

definuje metódu, ktorá sa vykoná po kliknutí na toto tlačidlo, ktoré reprezentuje napr. nie

setNeutralButton()

definuje metódu, ktorá sa vykoná po kliknutí na toto tlačidlo, ktoré reprezentuje napr. zavrieť

setView()

nastaví vlastný vzhľad dialógového okna

show()

zobrazí dialóg

new AlertDialog.Builder(this)
        .setTitle("Nadpis oznámenia")
        .setMessage("Správa oznámenia")
        .setPositiveButton("OK", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                //čo sa vykoná v prípade stlačenia tlačidla OK
            }

        })
 .show();