Android WYKŁAD 2
Agenda Activity cd Layouty Jednostki Dialogi LogCat Drugie Activity i Intents Serializacja Własne widoki Menu
Podgląd kodu Layoutu (XML) ALT + SHIFT + STRZAŁKA W PRAWO/LEWO przełączanie się pomiędzy edytorem wizualnym a tekstowym
Podgląd wyglądu Activity
Activity AndroidManifest.xml MyActivity.java Layout Widok
Activity AndroidManifest.xml MyActivity.java Layout Widok
Activity AndroidManifest.xml MyActivity.java Layout Widok
Tworzenie Layoutów idea layoutów
Tworzenie layoutu I NAZWA LAYOUTU (małe litery, bez PL znaków i spacji, słowa oddzielone _)
Tworzenie layoutu
Tworzenie layoutu Typy layoutów I Frame layout Linear layout (horizontal) Linear layout (vertical)
Tworzenie layoutu Typy layoutów II Table layout Grid layout (od Android 4.0) Relative layout (od Android 4.0)
Tworzenie Layoutów łączenie layoutów I Id nazwa zasobu - obiektu dla Javy Szerokość taka jak ekranu (rodzica) Wysokość zależy od zawartości Margines 20dp Gravity wyrównania w pionie - środek Drugi Linear layout ale z Ułożeniem horizontal
Tworzenie Layoutów łączenie layoutów
Tworzenie Layoutów łączenie layoutów Szerokość taka jak ekranu (rodzica) Wysokość zależy od zawartości Margines 20dp Umiejscowienie w kolumnie 0 Wierszu 0 Umiejscowienie w kolumnie 0 Wierszu 0 Rozciągnięte (span) na dwie kolumny (0 i 1)
Tworzenie layoutów RelativeLayout Odsunięcie widoków od brzegu layoutu POLA WYMAGANE!
Tworzenie layoutów RelativeLayout Wyrównanie do górnej krawędzi Wycentrowanie względem rodzica (tu. Layout) Widok będzie leżał zawsze pod textwiev2 Będzie wycentrowany względem rodzica i będzie odsunięty od textview2 o 20dp
Tworzenie layoutów ScrollView
Jednostki Różne urządzenia mają różne rozdzielczości i gęstość pikseli na cal (DPI) Cel: Tworzenie aplikacji wyglądających tak samo na każdym urządzeniu Jednostki w środowisku Android: px Pixel, wielkość zależna od DPI, różna na każdym ekranie unikać Przykład: Rozdzielczości WQVGA (240 400) oraz WVGA(480 800), które można znaleźć w urządzeniach o tych samych przekątnych. Element o szerokości 240px na pierwszym zajmie cały wyświetlacz, na drugim tylko połowę. in, mm cale, milimetry fizyczne jednostki - unikać pt punkt (1/72 in), tak sama wielkość na każdym ekranie - unikać dp density independent pixels (piksele niezależne od DPI), uniezależnia wielkość od rozdzielczości i wielkości wyświetlacza, 1dp = 1 px na ekranie gęstości 160dpi Stosunek zmienia się wraz ze wzrostem/spadkiem DPI! Dlatego element o wielkości 100 dp będzie zawsze będzie zajmował tyle samo miejsca sp scale independent pixels, jak dp ale skalowane przez wielkość czcionki systemowej Zalecenia: sp kiedy ustawiamy wielkości czcionek dp dla wszystkiego innego
Dialogi z opcją wyboru
LogCat Wirtualna konsola miejsce zapisu zdarzeń Log.d(tag, wiadomosc) // DEBUG Log.i(tag, wiadomosc) // INFO Log.e(tag, wiadomosc) // ERROR Log.w(tag, wiadomosc) // WARNING Log.v(tag, wiadomosc) // VERBOSE POZIOM FILTRY
LogCat na przykładzie Jak odwołać się do przycisku, który właśnie został kliknięty?
Cykl życia Activity
Cykl życia Activity
Cykl życia Activity WSTECZ HOME
Nawigacja SecondActivity Dodanie nowego Activity
Nawigacja SecondActivity AndroidManifest.xml
Nawigacja SecondActivity SecondActivity.java
Nawigacja Zmiana Activity KONTEKST DOCELOWE ACTIVITY (Aktualny stan aplikacji/obiektu) Hierarchia metod (uruchamianie) 1. MainActivity::onPause 2. SecondActivity::onStart 3. SecondActivity::onResume 4. MainActivity::onStop Hierarchia metod (powrót) 1. SecondActivity::onPause 2. MainActivity::onStart 3. MainActivity::onResume 4. SecondActivity::onStop 5. SecondActivity::onDestroy
Nawigacja powrót do poprzedniego Activity AndroidManifest.xml
Nawigacja przesyłanie danych MainActivity.java Nazwa Dane SecondActivity.java
Zwracanie wartości z Activity (Intent zwrotny) MainActivity SecondActivity SecondActivity.java
Zwracanie wartości z Activity (Intent zwrotny)
Przesyłanie obiektów przez Intent 6 Interfejs Parcelable odpowiednik Serializable w Androidzie nastawiony na wydajność i oszczędność 35 serializacja ważna kolejność! 30 używamy w przypadku zagnieżdżonych klas do oznaczenia hierarchii 17 obiekt służący deserializacji kod generowany automatycznie przez IDE 11 Deserializacja - ważna kolejność!
Implicit intents Intent może tworzyć akcję obsłużoną przez dowolną zainstalowaną w systemie aplikację.
Implicit intents Stwórz sms Zwraca Activity które może się zająć obsługą tego intentu Zwraca PackageManager Klasę przechowującą informację o wszystkich zainstalowanych aplikacjach w systemie Implementacja tego mechanizmu we własnej aplikacji: http://developer.android.com/guide/components/intents-filters.html#receiving
Własny Widok MyView.java
Własny Widok Po dodaniu nowego widoku do Activity należy przebudować projekt (CTRL+F9)
Własny Widok
Wyświetlanie obrazów - ImageView Małe litery, bez spacji, bez PL znaków Wszystkie grafiki muszą znajdować się w folderze `drawable`
Wyświetlanie obrazów - ImageView Szerokość taka jak zawartość Wysokość stała 200dp (szerokość zostanie przeskalowana!) Wyrównaj centralnie w rodzicu Wyrównaj do góry względem rodzica Źródło obrazu z zasobów Id = imageview
Wyświetlanie obrazów dynamicznie - ImageView Nazwa zasobu, typ zasobu (nazwa folderu), nazwa paczki
Własne Menu Tworzenie menu w XML
Własne Menu Włączenie menu w Activity Włączenie menu: połączenie pliku XML z podajnikiem Menu (MainActivity.java)
Własne Menu Obsługa menu OPCJA 1 menu_main.xml MainActivity.xml OPCJA 2 Stringi przetrzymywane w zasobach MainActivity.xml \app\src\main\res\values
Własne Menu w ActionBar never nigdy always zawsze ifroom jeśli jest miejsce
Własne Menu menu zagnieżdżone
Pytania? Czy jesteście zainteresowani jakimiś konkretnymi tematami?