protected void onsaveinstancestate(bundle outstate); protected void onrestoreinstancestate(bundle savedinstancestate);

Podobne dokumenty
Agenda. Implicit intents Wyświetlanie obrazków Menu Ikona aplikacji Praca z kolekcjami i ListView Własny widok

Projektowanie, tworzenie aplikacji mobilnych na platformie Android

Aktywności są związane z ekranem i definiują jego wygląd. Dzieje się to poprzez podpięcie do aktywności odpowiedniego widoku.

Agenda. Activity cd Layouty Jednostki Dialogi LogCat Drugie Activity i Intents Serializacja Własne widoki Menu

Fragmenty są wspierane od Androida 1.6

Expo Composer Garncarska Szczecin tel.: info@doittechnology.pl. Dokumentacja użytkownika

akademia androida Składowanie danych część VI

Ciekawym rozwiązaniem służącym do obsługi zdarzeń dla kilku przycisków w ramach jednej aktywności może być następujący kod:

Widoki zagnieżdżone, layout. 1. Wprowadzenie Repozytoria danych

akademia androida Pierwsze kroki w Androidzie część I

dr Artur Bartoszewski dr Artur Bartoszewski - Aplikacje mobilne - Wykład

Tworzenie prezentacji w MS PowerPoint

Życie aktywności Nawigując przez aplikacje poszczególne Aktywności przechodzą pomiędzy stanami. Dla przykładu gdy aktywność uruchamia się po raz

Modele danych walidacja widoki zorientowane na model

Programowanie aplikacji dla technologii mobilnych. mgr inż. Anton Smoliński

Utworzenie aplikacji mobilnej Po uruchomieniu Visual Studio pokazuje się ekran powitalny. Po lewej stronie odnośniki do otworzenia lub stworzenia

Systemy operacyjne na platformach mobilnych

Warszawa, Wytyczne dla projektu Biblioteka GUI

Instrukcja obsługi Zaplecza epk w zakresie zarządzania tłumaczeniami opisów procedur, publikacji oraz poradników przedsiębiorcy

Laboratorium 9 (Więcej Aktywności, w Androidzie)

Zdarzenia Klasa Application Powiadomienia Toast AlertDialog

KATEGORIA OBSZAR WIEDZY

WSTĘP DO ANDROIDA. Laboratorium

REFERAT O PRACY DYPLOMOWEJ

Programowanie Urządzeń Mobilnych. Laboratorium nr 9,10

Menu Plik w Edytorze symboli i Edytorze widoku aparatów

Laboratorium 7 Blog: dodawanie i edycja wpisów

Wprowadzenie do programowania aplikacji mobilnych

dr Artur Bartoszewski dr Artur Bartoszewski - Aplikacje mobilne - Wykład

Temat 3. Projektowanie interfejsu użytkonwnika Kalkulator pierwszy program dla IOS

xmlns:prism= c. <ContentControl prism:regionmanager.regionname="mainregion" />

Powiadomienia w systemie Android

Instrukcja obsługi funkcji specjalnych szablonu C01 v.1.0

Przykłady zastosowań oraz optymalizacja działania komponentu ListView w aplikacjach dla urządzeń mobilnych z systemem Android

Dynamiczne i wydajne tworzenie interfejsu. Piotr Michałkiewicz

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

Dokumentacja użytkowa

akademia androida Intencje oraz URI część III

Omówienie wzorców wykorzystywanych w Prism 5.0. Dominika Różycka

Efektywne tworzenie aplikacji webowych z wykorzystaniem AngularJS, HTML5 i JavaScript

Aplikacje mobilne. Pliki zasobów, grafiki, menu, podpinanie zdarzeń. dr Tomasz Jach Instytut Informatyki, Uniwersytet Śląski

Microsoft PowerPoint 2003 efektywne tworzenie i prezentacji multimedialnych

Szanowni Państwo. Należy przy tym pamiętać, że zmiana stawek VAT obejmie dwie czynności:

Podręcznik użytkownika programu. Ceremonia 3.1

DesignCAD 3D Max 24.0 PL

Programowanie Urządzeń Mobilnych. Część II: Android. Wykład 2

Laboratorium Technologii Informacyjnych. Projektowanie Baz Danych

1. Dockbar, CMS + wyszukiwarka aplikacji Dodawanie portletów Widok zawartości stron... 3

Profesjonalni i skuteczni - projekt dla pracowników branży telekomunikacyjnej

akademia androida Service, BroadcastReceiver, ContentProvider część IV

Architektura Systemu. Architektura systemu umożliwia kontrolowanie iteracyjnego i przyrostowego procesu tworzenia systemu.

Programowanie aplikacji mobilnych

Layouty. Kilka layoutów

MVVM i XAML w Visual Studio 2015 / Jacek Matulewski. Gliwice, cop Spis treści

Programowanie obiektowe

Front-end: solidne podstawy. Wszystko, co warto wiedzieć o HTML, CSS, JavaScript i Bootstrap.

BIBLIOTEKA BLOKÓW JABLOTRON 100 SYSTEM

Systemy operacyjne na platformach mobilnych

I. Spis treści I. Spis treści... 2 II. Kreator szablonów Tworzenie szablonu Menu... 4 a. Opis ikon Dodanie nowego elementu...

Instrukcja obsługi aplikacji PQ-CONTROL

Aplikacja Dodatkowe zakładki Shoper Appstore REALIZACJA

Podstawy technologii cyfrowej i komputerów

Sylabus Moduł 4: Grafika menedżerska i prezentacyjna

Wydział Informatyki, Elektroniki i Telekomunikacji. Katedra Informatyki

Programowanie obiektowe

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Baza danych sql. 1. Wprowadzenie

System JFox-Storekeeper. Instrukcja użytkownika

Ustalanie dostępu do plików - Windows XP Home/Professional

akademia androida Sensory część V Mobile Applications Developers

Część II Wyświetlanie obrazów

4. Podstawowa konfiguracja

Programowanie Urządzeń Mobilnych. Laboratorium nr 7, 8

WSTĘP DO ANDROIDA. Laboratorium 2 Systemy i aplikacje bez granic

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

1. Opis. 2. Wymagania sprzętowe:

Mobilne aplikacje multimedialne

Android poradnik programisty

Wstęp 7 Rozdział 1. OpenOffice.ux.pl Writer środowisko pracy 9

Wykład 8: klasy cz. 4

Budowa aplikacji ASP.NET współpracującej z bazą dany do przeprowadzania ankiet internetowych

Aplikacje w środowisku Java

Baza danych. Program: Access 2007

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Zawartość. Wstęp. Moduł Rozbiórki. Wstęp Instalacja Konfiguracja Uruchomienie i praca z raportem... 6

Moduł 2 Użytkowanie komputerów i zarządzanie plikami wymaga od kandydata znajomości obsługi komputera osobistego.

Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin

Podręcznik Użytkownika LSI WRPO

Skanowanie OCR w aplikacji Kancelaria Komornika. Instrukcja dla użytkownika

Podstawowe elementy GUI cz. 2 i 3 - zadania

PDF TO FTP ZADANIA PROGRAMU:

grafika 2D i animacja obsługa rotacji i elementy 3D-OpenGL w Androidzie

MVVM Light Toolkit. Julita Borkowska

Android i Bluetooth Low Energy. Laboratorium 4 Niestacjonarne

ECDL/ICDL Grafika menedżerska i prezentacyjna Moduł S2 Sylabus - wersja 5.0

Systemy Rozproszone Technologia ICE

Wprowadzenie do projektu QualitySpy

Spis treści. 1 Moduł Mapy 2

e-podręcznik dla seniora... i nie tylko.

Transkrypt:

Android WYKŁAD 3

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

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);

Odtwarzanie Activity

Walidacja danych z widoków 5

Walidacja danych z widoków 6

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

Walidacja danych z widoku typ wyświetlanej klawiatury android:inputtype="phone" android:inputtype="textpassword" android:inputtype="number" android:inputtype="time"

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

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

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)

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

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

Fragment pojedyncza zakładka TabFragment1.java fragment_tab_fragment1.xml

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

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

Obsługa zakładek MainActivity.java ADAPTER ViewPager TabLayout Osobna metoda, by nie robić bałaganu w oncreate Podłączenie stworzonego adaptera (kontrolera zakładek) z widokiem viewpage Podłączenie viewpagera z tablayoutem

Efekt

ontabselectedlistener Po przejściu na nową zakładkę 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

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 Styl bazowy Odnośnik do colors.xml Źródło: http://www.viralandroid.com/2015/08/android-custom-material-design-theme-color.html

ThemeEditor edytor styli

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

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

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

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

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

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<ViewHolder> w naszym przypadku po: RecyclerView.Adapter<ToDoViewHolder> 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

Adapter

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

Efekt

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

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

Efekt

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

SharedPreferences 35

SharedPreferences MODE_PRIVATE MODE_WORLD_READABLE MODE_WORLD_WRITEABLE putint, putlong, putboolean, putstringset, putfloat 36

Zapis i odczyt z pliku Gdzie możemy zapisać plik: Wewnętrzny magazyn (Internal storage) pamięć wbudowana Zawsze dostępna Pliki zapisane przez naszą aplikację mogą być czytane domyślnie tylko przez nas Zewnętrzny magazyn (External storage) Karta SD Nie zawsze dostępna 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()

ODCZYT Zapis i odczyt z pliku w wewnętrznym magazynie getfilesdir() zwraca folder zapisu plików w magazynie Np. /data/user/0/[package]/files 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);

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?

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

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

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

Poprawne zarządzanie uprawnianiami w Androidzie 6 Wzorzec Request/Response, w którym identyfikujemy żądania kodem (int) Sprawdzamy uprawniania aplikacji Jeśli ich nie mamy (jeszcze) to prosimy o pozwolenie Metoda w Activity która otrzymuje odpowiedź (Response) 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