Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Android WYKŁAD 3. Agenda Odtwarzanie stanu Activity Walidacja danych z widoków Przycisk "wstecz" Material Design Fragmenty Implementacja GUI opartego.

Podobne prezentacje


Prezentacja na temat: "Android WYKŁAD 3. Agenda Odtwarzanie stanu Activity Walidacja danych z widoków Przycisk "wstecz" Material Design Fragmenty Implementacja GUI opartego."— Zapis prezentacji:

1 Android WYKŁAD 3

2 Agenda Odtwarzanie stanu Activity Walidacja danych z widoków Przycisk "wstecz" Material Design Fragmenty Implementacja GUI opartego o zakładki Stylowanie aplikacji Implementacja listy Operacje IO: SharedPreferences Zapis odczyt z Internal i External Storage

3 Odtwarzanie stanu Activity Cel: Odtworzenie stanu Activity w przypadku jego wyłączenia przez system lub zmiany ekranu wywołanej np. zmianą orientacji telefonu Domyślnie stan każdego widoku jest zapisywany, dzięki czemu "layout przetrwa". Automatyczny zapis działa tylko dla widoków z własnym unikalnym ID! Dodatkowe dane mogą zostać zapisane dzięki implementacji metod: protected void onSaveInstanceState(Bundle outState); protected void onRestoreInstanceState(Bundle savedInstanceState);

4 Odtwarzanie Activity

5 Walidacja danych z widoków 5

6 6

7 Walidacja danych z widoków podczas wprowadzania Gdzieś w MainActivity Wyrażenie regularne: Dowolna ilość małych i dużych liter

8 Walidacja danych z widoku – typ wyświetlanej klawiatury android:inputType="phone"android:inputType="textPassword" android:inputType="number" android:inputType="time"

9 Podpięcie się pod przycisk "wróć"

10 Material design Nazwa filozofii tworzenia GUI, która przyświecać ma przy projektowaniu środowisk komputerowych i mobilnych Zalecenia co do tworzenia GUI, zachowania widoków, kolorystyki, ikon, typografii itd. Wspierana od Android 5.0 (API 21) poprzez nowe typy widoków Obecny w wielu na wielu innych platformach: Angular Material (angular), bootstrap-material-design (Bootstrap), Material Design In XAML Toolkit (C#), Jfoenix (Java) https://design.google.com/#resources

11 Material Design - przygotowanie By wykorzystać widoki zgodne z Material Design w aplikacji należy w app/build.gradle dodać bibliotekę design suport do sekcji "zależności" Upewnić się, że aplikacja tworzona jest dla Androida >= 5.0 (API 23)

12 Fragmenty Fragment reprezentuje porcję (moduł, część) Activity. Fragmenty posiadają własny cykl życia, własne eventy. Można je dodawać i usuwać z aktywności w trakcie działania Powstały by tworzyć dynamiczne GUI w zależności od parametrów ekranu urządzeń bez konieczności martwienia się o jego dostosowywanie Fragmenty powinny być tworzone tak by możliwe było ich powtórne użycie

13 Tworzenie fragmentu Trzy identyczne fragmenty z różną zawartością

14 TabFragment1.java fragment_tab_fragment1.xml Fragment – pojedyncza zakładka

15 FragmentPageAdapter Klasa odpowiedzialna za zarządzanie fragmentami na zakładkach W zależności od Numeru strony zwraca dany fragment Ilość zakładek == ilości fragmentów do wyświetlenia Etykiety zakładek

16 Obsługa zakładek – widok Activity Umiejscowienie po osi Z Trick: Poprzez ustalenie takiego samego elevation możliwe jest zakrycie cienia poszczególnych komponentów

17 Obsługa zakładek – MainActivity.java Podłączenie stworzonego adaptera (kontrolera zakładek) z widokiem viewPage Podłączenie viewPagera z tablayoutem ADAPTERViewPager TabLayout Osobna metoda, by nie robić bałaganu w onCreate

18 Efekt…

19 onTabSelectedListener Zwraca numer zaznaczonej zakładki Po dodaniu własnego Listenera należy wykonać akcję podmiany strony samemu! Podczas opuszczania strony Po zaznaczeniu zakładki na której już jesteśmy Po przejściu na nową zakładkę

20 Stylowanie globalne aplikacji \app\src\main\res\values\styles.xml przechowuje style wizualne widoków \app\src\main\res\values\colors.xml definiuje kolory użyte w stylach Źródło: http://www.viralandroid.com/2015/08/android-custom-material-design-theme-color.html Odnośnik do colors.xml Styl bazowy

21 ThemeEditor – edytor styli

22 Lista w Material Design RecyclerView – bardziej rozbudowana wersja ListView, elastyczna klasa przeznaczona do wyświetlania nawet ogromnych porcji danych Zależności: app\build.gradle

23 ToDoItem - model Reprezentacja pojedynczego wpisu na liście (tzw. model)

24 CardView – layout/item.xml CardView – wygląd i zachowanie pojedynczego wpisu na liście

25 RecyclerView Reprezentacja listy. Umieszczamy na layoucie w miejscu gdzie ma się wyświetlić lista – najczęściej wypełnia całe activity LayoutManager – odpowiedzialny za pozycjonowanie elementów na liście. Można definiować swoje, lub wykorzystać wbudowane: LinearLayoutManager GridLayoutManager StaggeredGridLayoutManager Linear Grid Staggered

26 ViewHolder Wzorzec reprezentujący widok. Powtał by ograniczyć ilość wywołań findViewById

27 Adapter (Wrapper, Opakowanie) - ogólnie - wzorzec projektowy, którego celem jest umożliwienie współpracy dwóm klasom o niekompatybilnych interfejsach. W omawianym przypadku klasa Adapter jest pomostem między listą obiektów (List<>) a RecyclerView Klasa dziedzicząca po RecyclerView.Adapter w naszym przypadku po: RecyclerView.Adapter Należy zaimplementować: ToDoViewHolder onCreateViewHolder(ViewGroup parent, int viewType) Miejsce na inicjalizację naszego ViewHolder’a void onBindViewHolder(ToDoViewHolder holder, int position) Łączy widok (kontrolkę) z polem klasy int getItemCount() Zwraca ilość elementów na liście

28 Adapter

29 MainActivity – połączenie wszystkiego w całość Obrazki z folderu drawable

30 Efekt

31 Animacja za pomocą ItemTouchHelper Cel: swipe w lewo – oznacz jako zrobione (pokoloruj na zielono) Swipe w prawo – usuń Poprawki: ToDoAdapter: ToDoViewHolder: Usuwa element z list Uaktualnia stan adaptera. WAŻNE!

32 Dodanie nowej funkcjonalności Swipe w prawo i lewo Metoda obsługująca zmianę położenia w pionie Zwraca pozycje na liście Kolor z zasobów Zmienia tło Aktualizuje listę! WAŻNE! Dołącza callbacki do RecycleView

33 Efekt

34 SharedPreferences Zapis prostych typów (int, float, double, string) do pliku Brak konieczności ręcznego odczytu danych (parsowania) Metoda zapisu: Klucz-Wartość Zalecane do zapisu małej ilości danych 34

35 SharedPreferences 35

36 SharedPreferences 36 MODE_PRIVATE MODE_WORLD_READABLE MODE_WORLD_WRITEABLE putInt, putLong, putBoolean, putStringSet, putFloat

37 Zapis i odczyt z pliku Gdzie możemy zapisać plik: Wewnętrzny magazyn (Internal storage) – pamięć wbudowana Zewnętrzny magazyn (External storage) – Karta SD Zawsze dostępnaNie zawsze dostępna Pliki zapisane przez naszą aplikację mogą być czytane domyślnie tylko przez nas Zapisane pliki są dostępne publicznie Podczas usuwania aplikacji usuwają się zawsze wszystkie zapisane pliki Pliki usuną się tylko jeśli zostały zapisane w ścieżce zwróconej przez getExternalFilesDir()

38 Zapis i odczyt z pliku w wewnętrznym magazynie ODCZYT ZAPIS MODE_PRIVATE – tryb domyślny MODE_APPEND – dopisanie MODE_WORLD_READABLE – mogą czytać inne aplikacje MODE_WORLD_WRITEABLE – mogą zapisywać inne aplikacje openFileOutput("mytextfile.txt", MODE_PRIVATE|MODE_APPEND); getFilesDir() – zwraca folder zapisu plików w magazynie Np. /data/user/0/[package]/files

39 Zapis i odczyt z pliku w zewnętrznym magazynie Uprawnienia do zapisu/odczytu w zewnętrznym magazynie \app\src\main\AndroidManifest.xml Czy w ogóle magazyn zewnętrzny istnieje?

40 Zapis i odczyt z pliku w zewnętrznym magazynie Nowy tryb bezpieczeństwa w Android 6 (API 23) wymaga manualnego poproszenia o przyznanie praw zapisu do zewnętrznego magazynu

41 Zapis i odczyt z pliku w zewnętrznym magazynie Zapis /storage/emulated/0 Metoda sprawdzająca czy użytkownik zezwolił na zapis

42 Zapis i odczyt z pliku w zewnętrznym magazynie Odczyt Metoda sprawdzająca czy użytkownik zezwolił na odczyt

43 Poprawne zarządzanie uprawnianiami w Androidzie 6 Metoda w Activity która otrzymuje odpowiedź (Response) Wzorzec Request/Response, w którym identyfikujemy żądania kodem (int) Sprawdzamy uprawniania aplikacji… Jeśli ich nie mamy (jeszcze) to prosimy o pozwolenie… Powinniśmy zawsze zareagować na odpowiedź użytkownika i wyłączyć część funkcjonalności, jeśli nie mamy prawa ich używać. W przeciwnym wypadku aplikacja wywoła wyjątek: permission denied


Pobierz ppt "Android WYKŁAD 3. Agenda Odtwarzanie stanu Activity Walidacja danych z widoków Przycisk "wstecz" Material Design Fragmenty Implementacja GUI opartego."

Podobne prezentacje


Reklamy Google