02
Měli bychom mít vše potřebné nastaveno, je tedy čas vytvořit náš první projekt. Jak je ve světě programování zvykem, nazveme první projekt „Hello world!“. Zároveň si vyzkoušíme propojení počítače s mobilním telefonem.
Název balíčku by měl začínat ...
Pojem „aktivita“ ...
Pro začátek se nám vytvořila aplikace s prázdnou obrazovkou (Activity) a jediným textem „Hello world!“. Pojďme vyzkoušet propojení s mobilní telefonem!
Na začátek se ujistěte, že ...
Pokud vše proběhlo v pořádku, vidíte na svém mobilním zařízení bílou obrazovku s nápisem „Hello world!“. Při doteku obrazovky mobilního zařízení by se měly objevovat zápisy o události v dolní části okna Android Studia (logcat).
Časté chyby:
Pojďme si nyní vyzkoušet přidání textu na obrazovce mobilní aplikace. Provedeme tak první zásah do kódu projektu.
V levé části okna Android Studia je zobrazena stromová struktura projektu. Je zastoupena záložkou app. V ní nás zajímá složka res a její podsložka layout, kde je popsán vzhled každého okna aplikace (aktivit). Každou aktivitu popisuje jeden soubor ve formátu XML. Zatím máme ve složce layout jediný soubor jediný s názvem activity_cistic.xml.
Vzhled aplikace je popsán pomocí dokumentu v jazyce XML. O jazyku XML se můžete více dozvědět třeba na stránkách W3Schools.com (www.w3schools.com). Nám stačí vedět, že jednotlivé prvky se popisují pomocí elementů podobně jako v jazyce HTML.
Postup přidání textu na hlavní obrazovku:
<RelativeLayout>
, který reprezentuje celý obsah okna aplikace, a dále element <TextView>
, který reprezentuje textové hlášení.
<TextView android:text=“...“ …/>
zkopírujeme ještě jednou (oba dva řádky až po značku „/>“). V uvozovkách za „android:text“ řepíšeme text Hello world
! na @string/text_oznameni
. Tím jsme vytvořili na obrazovce nový grafický prvek – popisek. Atribut android:text
určuje text, který bude zobrazen.
<TextView android:text="Hello World!" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:text="@string/text_oznameni" android:layout_width="wrap_content" android:layout_height="wrap_content" />
Texty do kódu bychom neměli vkládat přímo, ...
<resources> <string name="app_name">Cisteni obrazovky</string> <string name="action_settings">Settings</string> <string name="text_oznameni">Nyní můžete v klidu vyčistit obrazovku. Žádný prvek tady nereaguje na dotyk.</string> </resources>
app_name
. Tento text udává název, který se zobrazí v titulku aplikace. Pokud chceme, můžeme zde například dopsat diakritiku tak, aby se název aplikace zobrazoval správně. (Název projektu diakritiku obsahovat nemůže.)
Uspořádání jednotlivých grafických komponent v okně navzájem je dáno volbou Layout-u v souboru s aktivitou (v našem případě res/layout/activity_cistic.xml). Standardně Android Studio používá <RelativeLayout>
, který je vhodný pro rozmisťování komponent pomocí myši v grafickém režimu (můžete vyzkoušet přetáhnout text ručně – bude to fungovat, ale do kódu vám přibude několik nových řádek o umístění komponent).
Pokud přepíšeme element <RelativeLayout>
na <LinearLayout>
, jednotlivé prvky budou umístěny postupně za sebou. Musíme pak ještě přidat prvku <LinearLayout>
atribut android:orientation
s hodnotou vertical
, čímž zařídíme, že se komponenty budou skládat pod sebe. Tím jsme vyřešili překrytí textů. Texty jsou teď umístěny pod sebou.
Dále můžeme nastavit rozměry obrysu textů. To vyřešíme pomocí atributu android:width
a android:height
u prvků TextView
. Standardně mají atributy hodnotu wrap_content
, která znamená, že bude textový popisek zabírat v okně právě tolik místa, kolik je třeba k vypsání textu. Pokud chceme, aby text zabíral vždy celý řádek, změníme hodnotu atributu android:width
u obou prvků TextView
na match_parent
.
Výsledný kód by měl vypadat takto:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout 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:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".Cistic" android:orientation="vertical"> <TextView android:text="Hello World!" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TextView android:text="@string/text_oznameni" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>
<TextView>
. Tento element má atribut:
android:text
… text, který se zobrazí.
android:width
a android:height
.wrap_content
a match_parent
.
RelativeLayout
… je vhodný pro grafické umisťování prvků pomocí myši
LinearLayout
… prvky následují jeden za druhým. Mohou být pod sebou: android:orientation=vertical
nebo vedle sebe: horizontal
.
android:text=“@string/nazev_popisku“
app_name
v souboru res/values/strings.xml.