Cvičení

  1. Android Studio, instalace zalozeni projektu, emulator
  2. Ukazka aktivit, zakladni gui prvky, zasilani zprav mezi aktivitami
  3. BMI kalkulačka
  4. BMI kalkulačka - Pokračování
    • - Vytvoření menu + spuštění nové aktivity se zadaným URL (informace o BMI)
    • - Změna emoji pomocí startActivityForResult a onActivityResult
    • - Ukladaní posledních zadaných hodnot do aplikace pomocí SharedPreferences
    • - Bonus: jednoduchá historie několika posledních výsledků pomocí SharedPreferences (s využitím např. putStringSet)
  5. Barcode
    • - Zadání na tento úkol naleznete v následující video ukázce (obsahuje zvukovou stopu)
    • - Další informace a odkaz na template naleznete zde (pro stažení template použíjte VPN): http://tamz2.mrl.cz/cviceni3.php
  6. Sokoban
    • - Zadání na tento úkol naleznete v následující video ukázce (obsahuje zvukovou stopu)
    • - Pro splnění úkolu je potřeba vyřešit všechny správné pohyby hráče a beden po hracím poli
    • - Další informace a odkaz na template naleznete zde (pro stažení template použíjte VPN): http://tamz2.mrl.cz/cviceni4.php
  7. Sokoban pokračování - Levely
    • - Zadání na tento úkol naleznete v následující video ukázce (obsahuje zvukovou stopu)
    • - Pro splnění úkolu je potřeba načítat herní levely ze souboru, kdy po splnění daného levelu se přepne na level následující. Pro pokročilejší verzi úkolu je možné přidat výběr levelu pomocí např. listu nebo výběrem z menu. V hodnocení úkolu bude zohledněno zpracování práce s levely (např. zda hra dokáže pracovat s různě velkými levely).
    • - odkaz na levely
      Symbols used in the screen files:
      " " (space)--An empty space (floor)
      "#"--Walls (the walls will be curved and shadowed automatically)
      "."--Target or goal square
      "$"--Treasure
      "*"--Treasure on a goal area
      "@"--You (the player)
      "+"--You standing on a goal square.
  8. Sokoban pokračování - Ukládání skóre, zobrazení náhledu levelu
    • - Zobrazit náhled levelu pomocí ListView nebo modernějšího RecyclerView
      - Jedná se o automaticky (programově) generovaný náhled levelu podle vzhledu levelu ze třídy SokoView - ne pouze například manuálně (vytípnutý) vložený obrázek do adresáře drawable/assets a poté do listu
      - Ukládat nejlepší skóre ke každému levelu do úložiště - využít můžete SQLite nebo Room Persistence Library (případně SharedPreferences, ale bodově bude zvýhodněno použití jedné z předchozích technik)
      - Pokud by někdo chtěl další dodatečné body za tento úkol, může zkusit udělat například jednoduchý editor levelů nebo nějak jinak hru vylepšit (úvodní menu s výběrem postavy a zadání jména hráče; ukládání i rozehraného levelu; odemčení nového lelevu nebo postavy po splnění minimálního skóre atd. )
      - Hint: DBHelper.java
      - Hint: Database Inspector
      - Hint: SQLite Android
    • sokoban
  9. Kurzovní lístek
    • - Zadání na tento úkol naleznete v následující video ukázce (obsahuje zvukovou stopu)
    • - Pro splnění úkolu je potřeba zobrazit: název měny, kurz, název země, vlajku
    • - Přistupování k jednotlivým vlajkám by mělo být realizováno podle jména obrázku v adresáři drawable (můžete využit odpovídající kód země)
    • - Pro splnění úkolu je potřeba vyřešit TODO 1 - 3 (tedy správné zobrazení informací v listu)
      - TODO 4 (převod měn) zatím není nutné implementovat, tato část bude součástí zadání dalšího cvičení

    • HINT:
      Pridat dalsi UI prvky, ktere se maji v listu zobrazovat lze v souboru list_entry_layout.xml
      - Po pridani UI prvku je nutne jeho pridani i do tridy EntryHolder - ukazka jak zobrazit kod meny jiz v template je, takze staci tento postup aplikovat i na dalsi data (mena, stat, kurz, vlajka)
      - Odkaz na template naleznete zde: TEMPLATE
  10. Kurzovní lístek - pokračování
    • - Zadání na tento úkol naleznete v následující a předchozí video ukázce (obsahuje zvukovou stopu)
    • - Pro splnění úkolu je potřeba udělat aktivitu pro převod měn a to ideálně tak, aby se převod udělal automaticky po zadání dané částky bez stisku tlačítka (pokud by se nedařilo, tak je i možnost s tlačítkem uznatelná viz předchozí video v čase 3:19)
    • Pokud pri vytvoreni a spusteni nove aktivity dostanete chybu "You need to use a Theme.AppCompat theme (or descendant) with this activity." vlozte do souboru AndroidManifest do elementu application: theme="@style/Theme.AppCompat.Light.DarkActionBar"
    • BONUS:
      - Vyřešit offline načítání kurzovního lístku např. z úložiště/souboru pokud není k dispozici internet
      - Při převodu pracovat i s množstvím
    • - Odkaz na template naleznete zde: TEMPLATE
  11. Porizeni fotografie - detekce tvari
    • - Zadání na tento úkol naleznete v následujícím template v komentarich: TEMPLATE
  12. Face Swap
    • - oproti predchozimu ukolu je potreba vyresit: face swap (SWAP), nacitani obrazku z galerie (LOAD), vyber tvari pomoci RecyclerView, praci s obrazem z kamery v realnem case (LIVE)
      - Zadání na tento úkol naleznete v následujícím dokumentu zadaní
      - obsahuje odkazy i na video ukázky (template je stejný jako v předchozím cvičení)
      - jen ne potřeba odkomentovat část týkající se facemark = Face.createFacemarkLBF()
      - v aplikaci je výběr tváří realizován pomocí RecyclerView (HORIZONTAL)
  13. Fragmenty (3-5b)
    • - Za pomocí fragmentů modifikujte předchozí aplikaci s kurzovním lístkem
      - Template je tedy stejný jako ve cvičení, které se týkalo kurzovního lístku
      - Na obrázku a ve videu je ukázka jednodušší varianty řešení (3b), kde jsou dva fragmenty (vytvoreny staticky)
      - Varianta s dynamickým přepínám fragmentů podle orientace zařízení bude ohodnocena více body (5b): kdy v landscape orientaci budou zobrazeny dva fragmenty (fragment1 + fragment2) a v portrait pouze jeden (fragment1)
    • cnb-fragmenty