Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

SMB - Fragmenty Michail Mokkas.

Podobne prezentacje


Prezentacja na temat: "SMB - Fragmenty Michail Mokkas."— Zapis prezentacji:

1 SMB - Fragmenty Michail Mokkas

2 Fragmenty Reprezentuje moduł interfejsu zagnieżdżonego w aktywności.
Poprzez dodawanie fragmentów można budować interfejs graficzny składający się z wielu sektorów (ang. panes). Zostały wprowadzone wraz z Android 3.0 (API 11). Głównym powodem była szeroka dostępność urządzeń o różnym rozmiarze ekranów (np. tablety). starsze wersje mogą z nich korzystać za pośrednictwem biblioteki: “v4 Support Library” Fragmenty mogą być ponownie wykorzystane w dowolnej liczbie aktywności.

3 Fragmenty kont. 1 Umożliwiają repozycjonowanie porcji UI w zależności od kształtu/rozmiaru ekranu. source:

4 Cykl życiowy fragmentu
Fragmenty posiadają własny cykl zyciowy, który jest zależny od cyklu życiowego aktywności, w której są zagnieżdzone. Bardzo podobny do aktywności. Jeżeli zaistniała potrzeba konwersji jakiejś aktywności na fragment, często wystarczy tylko przekopiować kod z poszczególnych metod bez potrzeby jego modyfikacji. Stany w jakich fragment może się znajdować: Resumed - jest widoczny w uruchomionej aktywności Paused - jest widoczny w uruchomionej aktywności ale zgubił focus Stopped - nie widoczny (np. usunięty z aktywności lub aktywność jest także nie widoczna)

5 Stan fragmentu W razie potrzeby można zapisać stan fragmentu wykorzystując do tego klasę Bundle. Bundle podobnie jak SharedPreferences przyjmuje wartości prymitywne w postaci <klucz,wartość> . Zapisanie stanu fragmentu odbywa się poprzez wykorzystanie metody: onSaveInstanceState(). Odczytanie stanu fragmentu odbywa się tak jak w aktywności, poprzez przekazanie bundle’a odpowiedniej metodzie (np. onCreate dla aktywności, w przypadku fragmentu onCreateView). Uwaga mechanizm ten wykorzystywany jest jedynie dla danych tymczasowych. Aby trwale zapisać dane, powinniśmy wykorzystać np. SharedPreferences.

6 Cykl życiowy fragmentu kont. 1
onAttach(Context) – wywołana, kiedy następuje powiązanie fragmentu z aktywnością. onCreate(Bundle) – wywołana, kiedy następuje tworzenie fragmentu. onCreateView(LayoutInflater, ViewGroup, Bundle) – tworzy i zwraca hierarchię widoków powiązanych z fragmentem. onActivityCreated(Bundle) – powiadamia fragment o wykonaniu metody onCreate() powiązanej aktywności. onViewStateRestored(Bundle) – wywołana kiedy wszystkie zapisane stany z hierarchii widoków zostały odtworzone.

7 Cykl życiowy fragmentu kont. 2
onStart() – czyni fragment widoczny dla użytkownika. Pod warunkiem, że metoda onStart() aktywności też została wykonana. onResume() – sprawia, że interakcja użytkownika z fragmentem zostaje umożliwiona. Pod warunkiem, że metoda onResume () aktywności też została wykonana. onPause() – sprawia, że interakcja użytkownika z fragmentem zostaje uniemożliwiona. Powodem może być wykonanie metody onPause() aktywności lub modyfikacja samego fragmentu w aktywności. onStop() – czyni fragment niewidoczny dla użytkownika. Przyczyną może być zatrzymanie powiązanej aktywności lub modyfikacja samego fragmentu.

8 Cykl życiowy fragmentu kont. 3
onDestroyView() – umożliwia wyczyszczenie przez fragment zasobów powiązanych z jego widokiem. onDestroy() – wywołana w celu ostatecznego wyczyszczenia stanu fragmentu. onDetach() – wywołana tuż przed utratą powiązania fragmentu z daną aktywnością.

9 Rodzaje fragmentów Fragment – podstawowa klasa reprezentująca fragment. Podklasy Fragment: DialogFragment – wyświetla dialog. Służy jako alternatywa dialogów aktywności. Można dodawać do back stacku (użytkownik może powracać do nich). ListFragment – wyświetla listę elementów zarządzanych przez adapter (podobnie do ListActivity). Dysponuje metodami do zarządzania widokami listy (np. ListView) PreferenceFragment – wyświetla listę z preferencjami (podobnie jak PreferenceActivity).

10 Fragment (kod) - dynamicznie
LayoutInflater – ustala układ z pliku XML do poszczególnego obiektu View. Do otrzymania obiektu typu LayoutInflater wykorzystywana jest metoda getLayoutInflater(). inflate(int, ViewGroup, Boolean) – ustala hierarchię układów z pliku XML. Argument boolowski wskazuje, czy fragment powinien być dodany do hierarchii widoku ViewGroup.

11 Fragment (layout)

12 Dodawanie fragmentu do aktywności (statycznie)
android:layout_weight - ustala proporcje ekranowe (np. jeżeli mamy drugi fragment, który posiada wartość 4 to wtedy pierwszy zajmuje 1/5 a drugi 4/5 ekranu). Musi być ustalony dla wysokości lub szerokości (wtedy jeden z nich ma wartość 0).

13 Komunikacja pomiędzy Activity - Fragment
Z poziomu fragmentu: getActivity() – otrzymamy aktywność, która jest obecnie powiązana. np. View mv = getActivity().findViewById(R.id.activity1); Z poziomu aktywności: findFragmentById() – odnajduje powiązany fragment po id. findFragmentByTag() – odnajduje powiązany fragment po tagu. np. MyFragment mf = (MyFragment) getFragmentManager().findFragmentbyId(R.id.fragment1);

14 Dodawanie fragmentu do aktywności (dynamicznie)
FragmentManager – interfejs do interakcji z fragmentami zagnieżdżonymi w aktywności. Metoda getFragmentManager() zwraca instancję menadżera. Dla wyższych API zaleca się getSupportFragmentManager(). beginTransaction() – umożliwia dokonywanie edycji fragmentów zarządzanych przez FragmentManager. Należy utworzyć/wykonać transakcję jedynie przed zapisem stanu fragmentu.

15 Zamiana fragmentu replace(int, Fragment) – zastąpienie istniejącego fragmentu dodanego do jakiegoś kontenera, nowym. addToBackStack(String) – dodanie transakcji do back stacku (przyjmuje tag fragmentu).

16 Usunięcie fragmentu remove() – usunięcie fragmentu.
isInLayout() – sprawdza czy fragment jest już obecnie dodany do aktywności.

17 Aktywność z fragmentem (layout)

18 Przykład1 Aplikacja z jedną aktywnością i dwoma fragmentami, które są zapisywane w back stacku. Pliki układów takie jak wcześniej opisane. Tworzenie pierwszego fragmentu: Drugi fragment wygląda tak samo, jedyna róźnica to nazwa klasy MyFragment1 oraz tekst tv “Fragment2”.

19 Przykład1 kont. 1

20 Rezultat

21 ActionBar App Bar podnosi jakość doświadczeń użytkownika.
Wyświetla aktualne miejsce w aplikacji, w którym użytkownik się znajduje. Udostępnia funkcje jak nawigacja oraz wyszukiwanie. Sprawia, że poruszanie się po aplikacji jest bardziej intuicyjne (podobne do wielu innych aplikacji).

22 Toolbar Jest uogólnieniem ActionBar.
Został dodany w API 21 (Lolipop) wraz z Material Design Toolbar jest widokiem co umożliwia lepszą kontrolę oraz elastyczność. Toolbar może być zagnieżdżony w różnych poziomach hierarchii układu aktywności (w przeciwieństwie do ActionBar).

23 TabLayout Dostarcza układ horyzontalny do pokazywania zakładek.
Aby móc korzystać z TabLayout należy dodać do dependencies w pliku build.gradle:app : compile ‘com.android.support:design:23.1.0’ lub nowsza wersja newTab() – tworzy i zwraca nową zakładkę TabLayout.Tab addTab(TabLayout.Tab, int, boolean) – dodanie zakładki do układu na wskazanej pozycji oraz ustawieniem czy ma być wybrana. Domyślna wersja metody dodaje zakładkę jako ostatnią oraz jeżeli jest pierwsza zostaje wybrana (domyślnie pokazująca się). setTabGravity() – wybranie sposobu w jaki, zakładki będą pozycjonowane. GRAVITY_CENTER - centrowanie GRAVITY_FILL – wypełnia TabLayout jak bardzo jest to możliwe

24 TabLayout kont. 1 TabLayout.OnTabSelectedListener – interfejs wywołań zwrotnych powołany po zmianie stanu zaznaczenia zakładki. onTabSelected() – wywołana kiedy zakładka przechodzi w stan zaznaczenia. onTabUnselected() - wywołana kiedy zakładka przechodzi w stan odznaczenia. onTabReselected() – wywołana kiedy użytkownik ponownie zaznacza zaznaczoną już zakładkę. TabLayout.Tab – reprezentuje zakładkę. getPosition() – zwraca aktualną pozycję zakładki.

25 ViewPager Służy do zarządzania i przesuwania stronami (np. fragment).
setAdapter(PagerAdapter) – ustawia PagerAdapter (bazowa klasa) do dostarczania widoków. addOnPageChangeListener(ViewPager.onPagehangeListener) – nasłuchuje na zmianę strony. setCurrentItem(int, boolean) – ustala aktualnie wybraną stronę.

26 Tworzenie zakładek (tabs)

27 Zakładka 1 (layout)

28 Zakładka 2 (layout)

29 Zakładka 3 (layout)

30 PageAdapter PageAdapter - abstrakcyjna klasa, dlatego musimy stworzyć własną implementację. Alternatywnie: FragmentPagerAdapter - przetrzymuje wszystkie fragmenty w pamięci FragmentsStatePagerAdapter - przetrzymuje jedynie savedInstanceState stanów fragmentów (usuwa te bez focusa)

31 Aktywność z zakładkami (kod)
android.support.v4: ViewPager Fragment FragmentManager FragmentSupportManager FragmentStatePagerAdapter android.support.v7: AppCompatActivity Toolbar

32 Aktywność z zakładkami (kod) kont. 1

33 Aktywność z zakładkami (kod) kont. 2

34 Aktywność z zakładkami (layout)

35 Rezultat


Pobierz ppt "SMB - Fragmenty Michail Mokkas."

Podobne prezentacje


Reklamy Google