Programowanie aplikacji mobilnych

Podobne dokumenty
GUI - projektowanie interfejsów cz. II

Programowanie aplikacji mobilnych

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:

Programowanie w języku Java. Kolekcje

Kolekcje mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Kolekcje. Na podstawie:

Język Java część 2 (przykładowa aplikacja)

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

Zdarzenia Klasa Application Powiadomienia Toast AlertDialog

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

Kolekcja (kontener) to po prostu obiekt, który grupuje wiele elementów w jeden twór.

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

Java Collections Framework

Język Java część 2 (przykładowa aplikacja)

Realizacja ekstensji klasy. Paulina Strzelecka, Tomasz Roszkowski

Programowanie obiektowe - 1.

Programowanie aplikacji mobilnych

GUI - projektowanie interfejsów cz. II

java.util.* :Kolekcje Tomasz Borzyszkowski

Programowanie Obiektowe (Java)

Wprowadzenie do projektu QualitySpy

Programowanie obiektowe

Mobilne aplikacje multimedialne

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04

Aplikacje WWW. Laboratorium z przedmiotu Aplikacje WWW - zestaw 01

INTENSE PLATFORM Zmiany w wersji Wersja 7.2

Lista, Stos, Kolejka, Tablica Asocjacyjna

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

akademia androida Intencje oraz URI część III

Programowanie obiektowe

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

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

Multimedia JAVA. Historia

Programowanie obiektowe

Programowanie obiektowe

Systemy operacyjne na platformach mobilnych

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

Okno logowania. Okno aplikacji. 1. Logowanie i rejestracja

Programowanie Obiektowe GUI

Java Podstawy. Michał Bereta

Dodanie nowej formy do projektu polega na:

Aby pobrać program FotoSender naleŝy na stronę lub i kliknąć na link Program do wysyłki zdjęć Internetem.

Laboratorium 8 ( Android -pierwsza aplikacja)

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

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

Android, wprowadzenie do SDK

WSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy

Kolekcje - pakiet Java Collections Framework

Instrukcja obsługi programu FotoSender

Projekt Hurtownia, realizacja rejestracji dostaw produktów

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz

Wprowadzenie do programowania aplikacji mobilnych

Kleos Mobile Android

Powiadomienia w systemie Android

MVVM Light Toolkit. Julita Borkowska

1. Pobieranie i instalacja FotoSendera

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

Java niezbędnik programisty spotkanie nr 8. Kolekcje c.d.

Programowanie obiektowe zastosowanie języka Java SE

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

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania

BAZY DANYCH MAKRA I PRZYCISKI. Microsoft Access. Adrian Horzyk. Akademia Górniczo-Hutnicza

Klasy abstrakcyjne i interfejsy

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

Zaawansowane aplikacje internetowe

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

Język JAVA podstawy. wykład 2, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Programowanie obiektowe

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

SKRÓCONA INSTRUKCJA OBSŁUGI POCZTY ELEKTRONICZNEJ ZIMBRA WEBMAIL

Dokumentacja do API Javy.

akademia androida Pierwsze kroki w Androidzie część I

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Tworzenie prezentacji w MS PowerPoint

Instrukcja laboratoryjna cz.3

Platforma e-learningowa

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Programowanie obiektowe

Bazy danych TERMINOLOGIA

Backend Administratora

Języki i techniki programowania Ćwiczenia 4 Wzorce

Viatoll Calc v1.3. Viatoll Calc. Instrukcja użytkownika. Strona 1

Klasy abstrakcyjne, interfejsy i polimorfizm

Interfejsy i klasy wewnętrzne

D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

Języki programowania imperatywnego

Instrukcja obsługi aplikacji PQ-CONTROL

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

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

Podstawy Programowania Obiektowego

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Języki i techniki programowania Ćwiczenia 2

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

- 1 Laboratorium fotografii cyfrowej Foto Video Hennig

Programowanie obiektowe

Transkrypt:

Katedra Inżynierii Wiedzy Wykład 2

Tematyka zajęć Wprowadzenie do aplikacji mobilnych i platformy Android; Program a wersje systemu Android; Środowisko Android Studio; Wygląd aplikacji i podstawy GUI; Wysyłanie wiadomości SMS; Użycie aparatu fotograficznego; Odtwarzanie dźwięku; Odbiór sygnału GPS.

Gradle Narzędzie do budowy projektów; alternatywa dla Ant a i Maven a w Android Studio; w przypadku Android mamy pewną domyślną strukturę projektu; Rysunek: Gradle

Rysunek: Plik aktywności

Nowe Aktywności nie mamy żadnej funkcji main umożliwiającej start całej aplikacji; każda nowa aktywność ma metodę oncreate(...); nowa aktywność tworzona jest w domyślnej paczce, w której mamy pozostałe elementy kodu (na początku tylko MainActivity); każda nowa aktywność wpisywana jest do pliku manifestu; Rysunek: Plik manifestu

Rysunek: Przypisujemy akcję do naciśnięcia pola tekstowego

Rysunek: Wywołujemy nową intencję

Typy intencji Intencja bezwarunkowa (Implicit) - nie ma znaczenia, który komponent obsługuje intencję - np. aplikacja, która umożliwia zrobienie zdjęcia. Nie jest istotne, która to będzie aplikacja, o ile jest w stanie zrobić zdjęcie. Intencja warunkowa (Explicit) - dokładnie wskazujemy, który komponent obsłuży tę intencję. Typy intencji - przykład Intencja bezwarunkowa (Explicit) - aplikacja zbudowana na podstawie kilku intencji - wywołanie różnych okien aplikacji, ale mamy zdefiniowane, który przycisk wywołuje konkretną intencję. Intencja warunkowa (Implicit) - aplikacja, w której możliwe jest wysłanie e-maila, po naciśnięciu przycisku - nie ma znaczenia, jaka aplikacja do wysyłania maili obsłuży te intencję. Itencja typu Implicit (przykład 2) - uruchomienie strony internetowej po naciśnięciu przycisku - dowolna przeglądarka internetowa.

Jeszcze intencje Implicit - wymagana jest akcja oraz data URI (Uniform Resource Identifier). Opcjonalnie (kategoria, komponenty); Explicit - Kontekst i komponent (przeważnie klasa/ aktywność). Kontekst (Context) jest bazową klasą dla klas Activity, Service, Application - czyli ogólnie globalna informacja umożliwiająca dostęp do zasobów, wywoływania intencji. Zatem nasza przykładowa intencja była typu Explicit.

Event Listener akcja - kliknięcie, długie kliknięcie, przeciągnięcie po ekranie; nasłuchiwanie zdarzenia; właściwość onclick danego elementu powiązana z konkretną metodą; metoda umożliwiająca wykonanie określonej czynności (wyświetlenie tekstu, zmiana koloru tła, wypisanie tekstu na ekran, uruchomienie nowej aktywności); Metody Callback onclick(); onlongclick(); onfocuschange();

Klasa wszystkie metody są zaimplementowane. Interfejs wszystkie metody są abstrakcyjne. Klasa abstrakcyjna niektóre metody są zaimplementowane; niektóre metody są abstrakcyjne.

Interfejsy tworzony przy pomocy słowa kluczowego interface; dokładny opis czynności(metod), które dana klasa powinna robić; brak opisu, w jaki sposób ma zostać zrealizowane dane zadanie; np. metoda Sortuj(int[] tablica) - wymusza na nas zaimplementowanie metody sortowania dla tablicy typów int. Nie ma jednak informacji na temat tego, czy ma to być quicksort, czy też sortowanie bąbelkowe; klasa implementująca dany interfejs może posiadać dodatkowe metody charakterystyczne tylko dla niej; adnotacja @Override - a więc wskazanie w klasie implementującej metodę danego interfejsu, iż nadpisujemy tę metodę; interfejs może być używany jako ogólniejszy typ - nadklasa dla innych klas, np. interfejs Pojazd, a dalej: Rower jest implementacją interfejsu Pojazd.

Klasy abstrakcyjne mogą zawierać metody abstrakcyjne; mogą zawierać zwykłe metody posiadające określone funkcjonalności; mogą zawieać stałe; metod abstrakcyjnych nie można oznaczyć jako statycznych; nie można stworzyć konkretnej instancji klasy abstrakcyjnej;

Metody wirtualne w Javie wszystkie metody są wirtualne; w # użycie słowa kluczowego virtual - określenie metody jako wirtualnej. Rysunek: Metody wirtualne

onclick oraz onclicklistener onclicklister - interfejs z abstrakcyjną metodą onclick; możemy napisać klasę, która implementuje metodę interfejsu onclicklistener ustawienie nazwy metody w polu onclick (properties) umożliwia wywołanie metody tylko i wyłącznie z bieżącej aktywności; w przypadku podejścia z onclicklistener mamy możliwość kontroli zachowania przycisku spoza danej aktywności.

Rysunek: Klasa onclicklistener i przypisanie słuchacza do elementu interfejsu

Wracamy do Javy - kolekcje lista (java.util.list) - każdy element ma przyporządkowany numer kolejny(indeks). Możliwość dodawania nowych elementów oraz pobierania wartości elementu na danej pozycji; kolejka(java.util.queue) - lista umożliwiająca obsługę mechanizmu FIFO oraz LIFO; mapa (java.util.map) - przechowuje mapowania klucz-wartość, przy czym klucz jest unikalny.

Rysunek: Hierarchia Collections. Źródło: wazniak.mimuw.edu.pl

Nieco dokładniej - listy ArrayList - stosowana kiedy kluczowy jest czas dostępu do danych, ale liczba dodawanych elementów jest niewielka; LinkedList - wersja z powiązanymi elementami - stosowana, kiedy liczba operacji takich jak usuwanie, czy dodawanie będzie duża; ArrayList oraz LinkedList są implementacjami interfejsu List; kiedy używamy Array a kiedy Linked? - jeżeli nie jesteśmy pewni, to raczej mamy użyć ArrayList; w przypadku listy typu Linked pobranie elementu ma złożoność równą O(1).

Nieco dokładniej - kolejka kolejka LIFO - Last In First Out; kolejka FIFO - First In First Out; kolejka priorytetowa - kolejka z ustaloną strukturą relacji pomiędzy elementami; kolejki udostępniają mechanizm dodawania oraz pobierania elementu z głowy (języki funkcyjne np. Haskell i podział listy na głowę oraz ogon);

Nieco dokładniej - mapa mapa formalnie jest kolekcją; przechowują pary elementów klucz-wartość; wartości moga się powtarzać, natomiast obiekty-klucze muszą być unikalne w obrębie całej mapy; TreeMap - przechowuje elementy, które są posortowane według klucza; HashMap - funkcja HashCode, czyli zwrócenie liczby całkowitej dla obiektu swojego typu.

Wybrane operacje na kolekcjach boolean Add(Object o); boolean Remove(Object o); boolean Contains(Object o); boolean removeall(collection coll); int Size().

Rysunek: Klasa Object i zastosowanie

Wracając do Android - pamięć Wyświetlenie kilku elementów widocznych dla użytkownika na bieżącym ekranie zamiast tworzenia wszystkich obiektów (np. Scroll w kontaktach); Rysunek: Wykorzystanie pamięci

kontrolka - ImageView dodanie ImageView do dowolnego pojemnika w Activity; dodanie wybranego zasobu (rysunku) do resources; ustalenie w properties właściwości src; możliwość wykorzystania np @mipmap/iclauncher; Rysunek: Przykład ImageView

Rysunek: Zastosowanie margin w kodzie

Rysunek: Zastosowanie margin w kodzie

Rysunek: Rodzaje animacji na przykładzie przycisków

Animacje opis animacji przy pomocy pliku XML; ustalenie stanu początkowego i końcowego dla animacji; załadowanie pliku XML przy pomocy kodu Java. Animacje - przykłady Fade - poziom przezroczystości ustalony przy pomocy parametru Alpha, gdzie 1.0 to normalna widoczność obiektu, a 0.0 to obiekt całkowicie niewidoczny; Movement - poruszanie sie elementu ustalone przy pomocy fromxdelta oraz toxdelta; Scalling i stretching - skalowanie i rozciąganie elementu przy pomocy fromxscale oraz toxscale, gdzie 0.1 określa pomniejszenie obiektu docelowego w stosunku do obiektu bazowego o 10 razy, a 10.0 oznacza powiększenie obiektu docelowego w stosunku do obiektu bazowego.

Animacje - przykłady cd. duration - czas trwania animacji w milisekundach ustalony przy pomocy opcji startoffset i duration; obracanie animacji - rotation - wartość ustalana na podstawie okręgu: fromdegrees (w stopniach), todegrees; Repeat - powtarzanie animacji - licznik powtórzeń.

Rysunek: Katalog animacji

Definicja (wrócimy do tego) Refaktoryzacja, zwana także refaktoringiem (ang. Refactoring) jest to proces wprowadzania zmian do systemu w taki sposób, aby jednocześnie zachować jego oryginalną funkcjonalność. Rysunek: Refaktoryzacja

Rysunek: Tworzymy pliki animacji

Rysunek: Tworzymy pliki animacji

Rysunek: Tworzymy pliki animacji

Rysunek: Tworzymy pliki animacji

Rysunek: Modyfikacja pliku aktywności

Rysunek: Modyfikacja pliku aktywności

Rysunek: Modyfikacja pliku aktywności

Rysunek: Modyfikacja pliku aktywności

Rysunek: Modyfikacja pliku aktywności

Rysunek: Modyfikacja pliku aktywności

Dziękuję za uwagę