Slide 1

Slide 1 text

Android School Warsztat 01 Adam Jodłowski

Slide 2

Slide 2 text

2 Android w 5 minut ● każda aplikacja działa w swoim własnym procesie, we własnej instancji maszyny wirtualnej Dalvik ● dostęp do zasobów sprzętowych i operacji systemowych jest ograniczany przez mechanizm uprawnień ● kod piszemy najczęściej w języku Java, korzystając z funkcji udostępnianych przez API Androida oraz SDK ● mamy dostęp do większości bibliotek J2SE ● funkcje specyficzne dla Androida są realizowane przez biblioteki systemowe i dostawców zewnętrznych ● konfiguracja i zarządzanie zasobami są oparte o XML

Slide 3

Slide 3 text

3 Narzędzia ● oficjalnie wspieranym IDE jest Eclipse, dedykowana wtyczka została zintegrowana w dystrybucję o nazwie ADT Bundle zawierającą kompletny zestaw narzędzi ● Dalvik Debug Monitor Server (DDMS) stanowi narzędzie kontrolne i diagnostyczne aplikacji ● do naszej dyspozycji jest sporo kreatorów i narzędzi pomocniczych, w tym edytor GUI, profiler, kreator ikon aplikacji i najważniejszy – emulator systemu ● dowolne kombinacje ustawień emulatorów pozwalają na przetestowanie aplikacji na różnych urządzeniach, nie posiadając ich fizycznych odpowiedników

Slide 4

Slide 4 text

4 Zapoznanie ze środowiskiem pracy i utworzenie nowej aplikacji.

Slide 5

Slide 5 text

5 Zasoby statyczne ● zasoby składowe projektu są umieszczane w odpowiednio nazwanych katalogach, co pozwala na automatyczne dobieranie różnych wersji w zależności od potrzeb, zasoby są organizowane w pliku R /res/drawable (grafiki) /res/layout (układy widoków) /res/menu (układy menu) /res/values (wartości – kolory, wymiary, łańcuchy znaków, style) /res/anim (deklaratywne opisy animacji) /res/xml (dodatkowa konfiguracja komponentów) ● dla kompatybilności ze wszystkimi typami urządzeń, należy dostarczyć różne wersje tych samych zasobów grafiki w /res/drawable-ldpi, -mdpi, -hdpi i -xdpi układy widoków w /res/layout-land i -port ● internacjonalizacja na podstawie kwalifikatorów zasobów /res/values-pl, -ja, -de, ...

Slide 6

Slide 6 text

6 Reakcje na zdarzenia interfejsu ● każdy element interfejsu, do którego chcemy pobrać uchwyt, musi mieć nadany identyfikator ID android:id="@+id/my_button" ● uzyskanie referencji do widoku i rejestracja obiektu nasłuchującego (listenera) Button b = (Button) findViewById(R.id.my_button); b.setOnClickListener(new OnClickListener(...)); ● podstawowym narzędziem logowania jest klasa android.util.Log, przyjmująca tzw. tag i wiadomość Log.e(tag, msg) - błędy, Log.w(...) - ostrzeżenia, Log.i(...) - informacje, Log.d(...) - debug, Log.v(...) - verbose

Slide 7

Slide 7 text

7 Widoki i ich właściwości, układy widoków ● podstawowe komponenty interfejsu użytkownika TextView, Button, CheckBox, EditText, Spinner, ... ● konfiguracja programowa lub za pomocą XML pozwala na zmianę właściwości komponentu, najczęściej wyglądu android:layout_width android:layout_height android:color android:textSize android:inputType android:padding android:layout_margin android:text android:src ● układy widoków służą pozycjonowaniu komponentów interfejsu użytkownika względem siebie LinearLayout, TableLayout, FrameLayout, RelativeLayout, GridLayout, ...

Slide 8

Slide 8 text

8 Pozycjonowanie w LinearLayout

Slide 9

Slide 9 text

9 Pozycjonowanie w RelativeLayout

Slide 10

Slide 10 text

10 Zapoznaj się z widokami EditText (z filtrem treści) i Button, wyświetl wpisany tekst na konsoli na naciśnięcie przycisku. Poeksperymentuj z układami widoków, użyj przynajmniej LinearLayout i RelativeLayout, zwróć uwagę na właściwości gravity vs layout_gravity, layout_width/height/weight oraz przeglądnij właściwości pozycjonowania widoków wewnątrz RelativeLayout.

Slide 11

Slide 11 text

11 Aktywność ● pojedyńczy ekran składowy aplikacji widoczny na pierwszym planie podczas interakcji z użytkownikiem ● pełni rolę okna lub strony internetowej znanych ze środowiska komputerów osobistych ● najważniejsze trzy metody zwrotne onCreate(Bundle) - tworzenie aktywności onResume() - wznawianie onPause() - wstrzymywanie ● istnienie aktywności regulowane jest przez jej cykl życia

Slide 12

Slide 12 text

12

Slide 13

Slide 13 text

13 AndroidManifest.xml ● plik konfiguracyjny całej aplikacji, zawiera m.in. nazwę głównego pakietu wersję kodu aplikacji docelowe wersje platformy wymagane uprawienia wymagane biblioteki współdzielone deklaracje wszystkich komponentów składowych

Slide 14

Slide 14 text

14 Zarządzanie aktywnościami, intencje ● każda aktywność musi być zadeklarowana w manifeście ● intencje stanowią metodę komunikacji pomiędzy komponentami aplikacji Intent intent = new Intent(kontekst, klasa); np.: new Intent(this, Aktywnosc.class); ● uruchomienie jednej aktywności za pomocą drugiej startActivity(intent); ● metoda finish() kończy pracę aktywności ● intencje mogą zawierać w sobie proste dane intent.putExtra("etykieta", wartosc); ● odczytujemy je w nowej aktywności z obiektu intencji, która ją wystartowała getIntent().getIntExtra("etykieta", -1);

Slide 15

Slide 15 text

15 Rezultat wykonania ● możemy wystartować aktywność z zamiarem otrzymania od niej rezultatu przetwarzania startActivityForResult(intent, REQUEST_CODE); ● aktywność wywoływana musi ustawić rezultat operacji oraz spowodować własne zakończenie setResult(RESULT_CODE); finish(); ● może też przekazać wraz z odpowiedzią pewne proste dane setResult(RESULT_CODE, intent); ● rezultat odbieramy w metodzie zwrotnej aktywności wywołującej onActivityResult(int requestCode, int resultCode, Intent data);

Slide 16

Slide 16 text

16 W przykładowej aplikacji dodaj drugą aktywność, przejdź pomiędzy nimi za pomocą intencji, sprawdź zmiany w cyklu życia wypisując wiadomości na log. Dodaj do intencji proste dane, odbierz je i zwróć rezultat do aktywności startowej. Wskazówka: przypomnij sobie główne role manifestu zapoznaj się z jego kreatorami, zaimplementuj najważniejsze metody zwrotne aktywności.

Slide 17

Slide 17 text

17 Zadania domowe: 1. Zapoznaj się z komponentami AutoCompleteTextView, Spinner, CheckBox, RadioGroup. Wypełnij kontrolki danymi i obsłuż wybór użytkownika. 2. Zaimplementuj prosty kalkulator.

Slide 18

Slide 18 text

18 Wskazówki ● użycie AutoCompleteTextView (dodaj właściwość hint oraz completionThreshold) AutoCompleteTextView actv = (AutoCompleteTextView) findViewById(R.id.color_auto_complete); String[] colors = {"bialy", "brazowy", "czerwony", "czarny"}; ArrayAdapter colorAdapter = new ArrayAdapter(this, android.R.layout.simple_dropdown_item_1line, colors); actv.setAdapter(colorAdapter); ● tablicę wartości można stworzyć również jako zasób w /res/values/arrays.xml biały brązowy czerwony czarny ● przykładowe atrybuty konfiguracyjne Spinnera android:entries="@array/colors" android:prompt="@string/colors_prompt" ● obsłuż wybór elementu Spinnera rejestrując OnItemSelectedListener, dla CheckBoksa OnCheckedChangeListener