Tvorba mobilních aplikací pro geografická data II.
Mgr. Michal Jakl
LS 2025
Obsah lekce
Praktické cvičení: Tvorba první aplikace ve zvoleném prostředí
✅ Přenositelnost – kód napsaný v Javě běží na různých platformách (Android, Windows, Linux).
✅ Silná komunita – Java je jeden z nejrozšířenějších jazyků na světě.
✅ Bezpečnost – správa paměti a ochrana proti běžným chybám.
✅ Multithreading – podpora vícevláknového programování (důležité pro mobilní aplikace).
📝 Vysvětlení:
2. Struktura projektu v Android Studiu
2. Kroky k založení nového projektu
1️⃣ Otevři Android Studio a klikni na "New Project".
2️⃣ Vyber šablonu aplikace (doporučeno: Empty Activity pro začátek).
3️⃣ Zadej název projektu, např. "MojePrvniAplikace".
4️⃣ Vyber jazyk (Java nebo Kotlin).
5️⃣ Klikni na "Finish" – Android Studio vytvoří strukturu projektu.
✅ Po spuštění se zobrazí textové pole s nápisem „Hello World!“.
💡 Tip: Pro spuštění aplikace klikni na ▶ Run (v pravém horním rohu) a vyber emulátor nebo fyzické zařízení.
3. Swift
Co je Swift?
✅ Čitelnější syntaxe (podobná Pythonu).
✅ Bezpečnější správa paměti (žádné problémy s ukazateli).
✅ Lepší výkon – Swift je rychlejší než Objective-C.
3. Swift v Xcode a SwiftUI
Swift umožňuje deklarativní programování pomocí SwiftUI, což usnadňuje tvorbu uživatelského rozhraní.
📝 Vysvětlení:
4. Struktura projektu v Xcode
4. Kroky k založení Xcode projektu
1️⃣ Otevři Xcode a klikni na "Create a new Xcode project".
2️⃣ Vyber šablonu aplikace (doporučeno: App (SwiftUI)).
3️⃣ Zadej název projektu – např. "MojePrvniAplikace".
4️⃣ Zvol Swift jako jazyk a potvrď.
5️⃣ Klikni na "Finish" – Xcode vytvoří strukturu projektu.
✅ Po spuštění se zobrazí text „Ahoj, světe!“ ve SwiftUI.
💡 Tip: Pro spuštění aplikace klikni na ▶ Run (v horní liště) a vyber iOS simulátor nebo fyzické zařízení.
4. Rozdíl Java vs. Swift
💡 Zajímavost:
✅ Java je základní jazyk pro Android, Swift pro iOS.
✅ Swift má čistší a bezpečnější syntaxi než Java.
✅ Java používá XML pro UI, Swift preferuje deklarativní přístup (SwiftUI).
✅ Oba jazyky jsou silné, ale každý je optimalizován pro svou platformu.
4. Imperativní přístup
Programování lze rozdělit na imperativní a deklarativní přístup. Rozdíl je v tom, jak popisujeme, co má program udělat.
Imperativní programování (Java, XML v Androidu)
📝 Co děláme?
4. Deklarativní přístup
Deklarativní programování (SwiftUI, Jetpack Compose v Androidu)
📝 Co se tu děje?
4. Deklarativní vs. imperativní přístup
💡 Zajímavost:
🔥 Hlavní pointa:
5. Životní cyklus aplikace
6. Navigace mezi obrazovkami
Navigace je klíčová část mobilní aplikace – umožňuje přecházet mezi různými obrazovkami a přenášet mezi nimi data.
Každý systém (Android, iOS) má svůj vlastní způsob, jak s navigací pracovat.
6. Navigace mezi obrazovkami
6. Přechod mezi obrazovkami pomocí Intent
✅ Co se tu děje?
📌 Používá se pro přechod mezi dvěma aktivitami (obrazovkami).
📌 Může předávat data mezi aktivitami.
6. Navigace pomocí Fragmentů
📌 Fragmenty jsou lepší pro více sekcí v jedné aplikaci (např. menu, seznamy, detaily).
✅ Výhoda:
6. Navigation Component (moderní navigace v Androidu)
📌 Google doporučuje používat Navigation Component, který umožňuje snadnou navigaci pomocí XML.
✅ Výhoda:
6. Navigace v iOS aplikacích (SwiftUI)
V iOS aplikacích se navigace řeší pomocí NavigationView a NavigationLink v SwiftUI.
📝 Vysvětlení:
Pokud chceme předat data mezi obrazovkami, uděláme to pomocí proměnných.
📝 Vysvětlení:
6. Navigace pomocí TabView (spodní menu)
Pokud chceme přepínat mezi obrazovkami pomocí spodního menu, použijeme TabView.
📝 Vysvětlení:
6. Shrnutí navigačních metod
✅ V Androidu se navigace řeší pomocí Intentů, Fragmentů a Jetpack Navigation Component.�✅ V iOS se navigace v SwiftUI provádí pomocí NavigationView a NavigationLink.�✅ Oba systémy umožňují přenos dat mezi obrazovkami jednoduchým způsobem.�✅ Navigace je v SwiftUI intuitivnější a kratší na zápis než v Androidu.
💡 Zajímavost:
7. Práce s layouty a UI
Rozložení (layout) je způsob, jakým jsou prvky uživatelského rozhraní umístěny na obrazovce. Správný výběr layoutu je klíčový pro použitelnost aplikace, protože ovlivňuje vizuální přehlednost, přizpůsobení různým zařízením a interaktivitu.
7. Práce s layouty a UI
7. Layouty v Android aplikacích
Android umožňuje dvě hlavní metody návrhu layoutů:
1️⃣ XML layouty – klasický způsob, kde se UI definuje v souboru XML.
2️⃣ Jetpack Compose – moderní deklarativní přístup, kde se UI píše v Kotlinu.
7. Layouty v Android aplikacích
📝 Vysvětlení:
V XML souborech definujeme strukturu UI. Každý layout je hierarchicky strukturován jako strom prvků.
📝 Vysvětlení:
💡 Výhody Jetpack Compose:�✅ Méně kódu a lepší přehlednost.�✅ Snadná dynamická změna UI.�✅ Moderní přístup podporovaný Googlem.
Jetpack Compose definovat UI přímo v Kotlinu deklarativním způsobem, podobně jako SwiftUI v iOS.
7. Layouty v iOS aplikacích (SwiftUI)
Apple umožňuje tvorbu rozložení pomocí:
1️⃣ Storyboardy (klasický způsob, vizuální editor v Xcode).
2️⃣ SwiftUI (moderní deklarativní přístup).
📌 1. Storyboardy (klasický způsob v Xcode)
📌 Příklad Auto Layout Constraint:
📌 Nevýhody Storyboardů:� ❌ Může být nepřehledné u větších aplikací.� ❌ Nelze snadno verzovat v Git.
7. Layouty v iOS aplikacích (SwiftUI)
📌 2. SwiftUI (moderní deklarativní přístup)
Stejně jako Jetpack Compose, SwiftUI umožňuje definovat layout přímo v kódu.
📝 Vysvětlení:
💡 Výhody SwiftUI:�✅ Kód je kratší a přehlednější než u Storyboardů.�✅ Okamžitý náhled v Xcode (Preview mode).�✅ Lepší práce s dynamickým obsahem (např. seznamy).
7. Layouty - shrnutí
✅ V Androidu se layouty tvoří pomocí XML nebo Jetpack Compose.�✅ V iOS se layouty tvoří pomocí Storyboardů nebo SwiftUI.�✅ Jetpack Compose a SwiftUI jsou moderní deklarativní řešení, která zjednodušují vývoj UI.�✅ Storyboardy a XML jsou stále používány, ale postupně jsou nahrazovány novějšími přístupy.
💡 Zajímavost:
Praktické cvičení I. - zadání
📌 Úkol:
1️⃣ Přidej tlačítko do XML layoutu.
2️⃣ Po kliknutí na tlačítko se změní text ve TextView.
📌 Úkol:
1️⃣ Přidej tlačítko do SwiftUI layoutu.
2️⃣ Po kliknutí na tlačítko se změní text.
Praktické cvičení I. - Android dodatek
Praktické cvičení II. - zadání
📌 Úkol:
1️⃣ Vytvoř druhou obrazovku (SecondActivity.java).
2️⃣ Přidej tlačítko pro přechod mezi obrazovkami.
📌 Úkol:
1️⃣ Vytvoř druhou obrazovku (SecondView).
2️⃣ Přidej tlačítko pro přechod mezi obrazovkami pomocí NavigationLink.
Praktické cvičení II. - Android dodatek
Praktické cvičení - shrnutí
Děkuji za pozornost a těším se příště!��Prostor pro zpětnou vazbu
mail@mjakl.cz
Tel. 608 544 839
Web: mjakl.cz
Telegram: t.me/mjakl_cz