Agenda Kompleksowego Kursu Androida - 6 dni (dwa bloki po 3 dni)

Dzień 1

  1. Wprowadzenie 2h
  • skąd czerpać informacje
  • szczypta historii
  • rozwój Androida i wersje systemu
  • Android w liczbach
  • cechy rynku i środowiska
  • fragmentacja - zrozumienie zjawiska
  • podstawowe sposoby radzenia sobie z fragmentacją
  • podstawowe wzorce projektowe interfejsu użytkownika
  1. Architektura systemu 2h
  • warstwy abstrakcji systemu
  • wirtualna maszyna Dalvik
  • elementy i frameworki dostępne dla programistów
  1. Narzędzia programistyczne 1h
  • Android SDK - zawartość i przydatne narzędzia
  • Android Developer Tools Bundle vs. Android Studio Bundle
  • rodzaje emulatorów i różnice pomiędzy nimi
  • proces budowania od plików źródłowych do paczki APK
  1. Hello Android - eksperymenty z Activity
  • podstawy Android Studio
  • struktura projektu
  • podstawowe komponenty aplikacji i komunikacja pomiędzy nimi
  • AndroidManifest.xml - funkcja i zawartość pliku
  • mechanizm uprawnień w Android -
  • wprowadzenie do Activity
  • cykl życia Activity
  • deklarowanie Activity w manifeście
  • sposoby uruchamiania Activity
  • proceduralne tworzenie widoków (z kodu Java)
  • deklaratywne tworzenie widoków (z plików layoutów w XML)
  • rodzaje zasobów graficznych i ładowanie w zależności od cech urządzenia
  • odwoływanie się do zasobów w kodzie XML i Java
  • korzystanie z edytora graficznego do tworzenia Layoutów
  • używanie widoków z XML w kodzie Java
  • obsługa akcji na komponentach - mechanizm Listenerów
  • zapisywanie i odtwarzanie stanu Activity

Dzień 2

  1. TodoEkspert - pierwsza prawdziwa aplikacja od zera do publikacji
  • brief aplikacji i projekt architektury
  • implementacja Activity logowania - LinearLayout, selektory na przyciskach, walidacja i wyświetlanie błędów
  • AsyncTask - wykonywanie operacji w tle, informowanie o postępie
  • implementacja Activity z listą zadań - ActionBar i akcje, tworzenie dialogów z pytaniami
  • implementacja Activity dodawania nowego zadani - RelativeLayout, przekazywanie danych pomiędzy aktywnościami: startActivityForResult, Serializable vs. Parcelable
  • ćwiczenie: AsyncTask, ActionBar, walidacja
  1. Komunikacja HTTP
  • połączenia z wykorzystaniem HTTPUrlConnection i parsowanie wyników do JSONObject
  • zapisywanie danych w SharedPreferences
  • klasa Application i przechowywanie obiektów przez czas życia aplikacji
  • ListView i Adapter - wyświetlanie listy zadań pobranych z serwera

Dzień 3

  1. Baza danych SQLite i implementacja prostego DAO
  • co warto wiedzieć o SQLite - bazie danych wbudowanej w Androida
  • implementacja DAO - klasy SQLiteOpenHelper i SQLiteDatabase
  • kursory i SimpleCursorAdapter - wyświetlanie listy prosto z bazy danych
  1. Synchronizacja danych w tle
  • wykonywanie operacji w tle - klasy Service i IntentService
  • cykl życia serwisów
  • informowanie użytkownika z wykorzystaniem mechanizmu notyfikacji
  • BroadcastReceiver i sendBroadcast() - komunikacja pomiędzy komponentami aplikacji
  • tworzenie statycznych i dynamicznych BroadcastReceiver-ów
  1. Udostępnianie danych pomiędzy aplikacjami
  • ContentProvider i ContentResolver - mechanizm udostępniania danych na zewnątrz aplikacji
  • implementacja własnego Providera udostępniającego listę zadań
  • asynchroniczne ładowanie danych z wykorzystaniem mechanizmu Loaderów
  1. Publikacja aplikacji w Google Play
  • przygotowanie paczki release i generowanie certyfikatów release
  • Proguard - minimalizacja i zabezpieczanie plików APK
  • Dex2Jar - sposoby wyciągania kodu źródłowego opublikowanej aplikacji
  • dodatkowe materiały potrzebne do publikacji aplikacji
  • publikacja aplikacji - kanał produkcyjny i testy z użyciem kanałów Alpha i Beta

Dzień 1

  1. Fragmenty
  • zastosowania i wady fragmentów
  • biblioteka zgodności - dostęp do fragmentów poniżej API 11
  • korzystanie z fragmentów do tworzenia UI dla smartfonów i tabletów
  • cykl życia fragmentów
  • użycie fragmentów
  • FunWithFragments - możliwości fragmentów i sposób użycia
  1. TumblrViewer - przeglądarka blogów z UI dedykowanym dla tabletów
  • NawigationDrawer - menu boczne do przełączania pomiędzy blogami
  • łatwe pobieranie danych z API Tumblr - biblioteki AQuery (proste zapytania HTTP) i Gson (mapowanie JSON<->POJO)
  • implementacja własnych adapterów - korzystanie z ViewHolder i ConvertView w celu przyśpieszenia wyświetlania widoków na liście
  • implementacja nawigacji Master-Detail z wykorzystaniem fragmentów na smartfonie i tablecie
  • rozpoznawanie typu urządzenia z wykorzystaniem zasobów
  • komunikacja Fragment->Activity i Fragment->Fragment
  • DialogFragment - zalecany sposób wyświetlania dialogów

Dzień 2

  1. ATMLocator - korzystanie z Google Maps i ORM
  • konfiguracja API Google Maps w projekcie
  • pobieranie lokalizacji użytkownika z GPS oraz na podstawie adresu
  • ORMLite - mapowanie obiektowo-relacyjne w Androidzie
  • wybieranie jednej z dostępnych opcji - komponent Spinner
  • pole tekstowe wpisywania adresu z podpowiedziami
  • zapisywanie danych bankomatu w bazie danych i wyświetlanie ich na mapie
  1. Testowanie aplikacji na Android
  • testy jednostkowe z użyciem Robolectric - zalety, wady i problemy
  • testy instrumentacyjne z użyciem Robotium - automatyzacja testów manualnych
  • Calabash - alternatywne narzędzie do tworzenia i uruchamiania scenariuszy testów
  • przykład Continous Integration z użyciem Jenkins CI

Dzień 3

  1. Architektura aplikacji i przydatne biblioteki od Square
  • ButterKnife
  • Dagger
  • Otto
  • Picasso
  • Retrofit
  • architektura aplikacji w oparciu o powyższe biblioteki
  1. Material Design - dostosowywanie aplikacji
  • co wyróżnia Material Design
  • korzystanie z biblioteki AppCompat i Design Support
  • przejście z ActionBar na Toolbar
  • kolorowe akcenty i nowe style
  • NawigationView
  • CardView ­ organizacja widoków w karty
  • RecyclerView ­ nowa sposób wyświetlania kolekcji widoków
  • SwipeRefreshLayout
  • Pallete ­ dynamiczne dobieranie koloru do zawartości obrazów
  • efekty: paralaksa i Ripple