KOTLIN. Język programowania dla Androida

Podobne dokumenty
KOTLIN. Język programowania dla Androida

Programowanie dla Androida. Ubiquitous

Programowanie dla Androida. Ubiquitous

Programowanie dla Androida

Programowanie dla Androida. Ubiquitous

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Android - wprowadzenie. Łukasz Przywarty

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

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

akademia androida Pierwsze kroki w Androidzie część I

Systemy operacyjne na platformach mobilnych

Systemy operacyjne na platformach mobilnych

SOP System Obsługi Parkingów

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

Systemy operacyjne na platformach mobilnych

Zdarzenia Klasa Application Powiadomienia Toast AlertDialog

SWIFT. Zaawansowane Programowanie Obiektowe

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Systemy operacyjne na platformach mobilnych

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

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

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

Android, wprowadzenie do SDK

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

1 Podstawy c++ w pigułce.

WSTĘP DO ANDROIDA. Laboratorium

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 Urządzeń Mobilnych. Laboratorium nr 7, 8

JAVA W SUPER EXPRESOWEJ PIGUŁCE

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

Programowanie obiektowe

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

Programowanie obiektowe

Java w 21 dni / Rogers Cadenhead. Gliwice, cop Spis treści. O autorze 11. Wprowadzenie 13 TYDZIEŃ I JĘZYK JAVA

Rysowanie. Rysowanie - podstawy

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

Czym jest Android Architektura systemu Cechy platformy Android

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.

Java Język programowania

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Wprowadzenie do Objective-C

Podstawowe kontrolki i ich obsługa

1 Podstawy c++ w pigułce.

Fragmenty są wspierane od Androida 1.6

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

Programowanie w Internecie. Java

Technologie internetowe w programowaniu.

OSGi Agata Hejmej

Część 4 życie programu

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

Wprowadzenie do systemu Android

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Podstawowe elementy GUI - zadania

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Programowanie w języku C++ Grażyna Koba

Podstawy Programowania C++

Podstawowe części projektu w Javie

Dynamiczne i wydajne tworzenie interfejsu. Piotr Michałkiewicz

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Programowanie usług działających w tle

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

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

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

Agenda. Wprowadzenie do Androida

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

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Google Android. Opracował Maciej Ciurlik

Programowanie obiektowe zastosowanie języka Java SE

Szkolenie Android dla początkujących

MonoGame. Wieloplatformowe gry w C# Mateusz Cicheński

Android tworzenie aplikacji mobilnych

Programowanie w języku Swift : Big Nerd Ranch guide / Matthew Mathias, John Gallagher. Gliwice, cop Spis treści

Programowanie urządzeń mobilnych. dr inż. Juliusz Mikoda

Tworzenie aplikacji w języku Java

Projektowanie, tworzenie aplikacji mobilnych na platformie Android

Podstawy programowania skrót z wykładów:

PHP: bloki kodu, tablice, obiekty i formularze

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Mobilne aplikacje multimedialne

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

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

Podstawy programowania obiektowego

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

I - Microsoft Visual Studio C++

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Politechnika Poznańska, Instytut Informatyki, TWO/GE. Programowanie dla ios

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

Programowanie obiektowe

Laboratorium Systemów Mobilnych. Wykład 1

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

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

Mariusz Fraś. Instytut Informatyki. olitechnika Wrocławska. Systemy Wbudowane. Android. Dr inż. Mariusz Fraś. maf 1

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Java jako język programowania

Funkcje i instrukcje języka JavaScript

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

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

OpenLaszlo. OpenLaszlo

Transkrypt:

KOTLIN Język programowania dla Androida

Historia Kotlin został opracowany przez firmę JetBrains Prace rozpoczęto w 2011 r., od 2012 r. dostępny na licencji Apache 2. Nazwa pochodzi od wyspy koło Petersburga Kotlin 1.0 został udostępniony 15 lutego 2016 r. W pełni wspierany od Android Studio 3.0 Aktualnie wersja 1.2. Strona www.kotlinlang.org

Cechy Mimo innej składni może współpracować z kodem w Javie Ma się kompilować równie szybko jak Java Może się kompilować do bytecode u (Java 6 i 8) jak i do Java Script u i LLVM. Android Studio wspiera konwersje kodu z Javy na Kotlin

Playground Twórcy języka oferują interaktywną piaskownicę, w której można się bawić fragmentami kodu pod adresem: http://try.kotl.in

Cechy Podobnie jak w Swift średniki na końcu linii są opcjonalne Kotlin wykorzystuje inferencję typów Podział zmiennych na modyfikowalne var (mutable) i stałe val (immutable)

Typy podstawowe Byte Short Boolean Int Char Long String Float Double

Przykłady deklaracji zmiennych Deklaracja zmiennej Int przez inferencję Deklaracja zmiennej Int wprost Deklaracja stałej Int przez inferencję Deklaracja zmiennej String przez inferencję Wywołanie metody Wywołania metod Konwersja na Float

Typy nullowe Domyślnie w Kotlinie zmienna nie może mieć przypisanej wartości null Próba odwołania się do zmiennej niezainicjalizowanej powoduje błąd

Typy nullowe Dodając do nazwy typu? otrzymujemy zmienne, które mogą mieć wartość null Zmiennych typu nullowego nie można wprost podstawiać pod zwykłe zmienne

Typy nullowe Aby wykonać takie podstawienie, trzeba najpierw sprawdzić, czy zmienna nie jest pusta Zmiennej nullowej nie można też wywołać metod ani odwoływać się do jej własności

Typy nullowe Można użyć skróconej instrukcji A także wymusić konwersję na typ nienullowy

Typy nullowe A co, jak zmienną nullową chcemy przekazać jako argument funkcji? Można użyć funkcji let

Typy nullowe Można też skorzystać z operatora?:

Operator rzutowania Operator as Wersja niebezpieczna Wersja bezpieczna Operator is

Operatory - Negacja +, -, *, / Arytmetyczne % Modulo +=, -=, *=, /=, %= Skrócone ++, - - Inkrementacji, dekrementacji (postfix i prefix) ==,!= Porównania >, <, >=,<= Porównania! Zaprzeczenie &&, And i Or.. Operator zakresu

Pętle Pętla for-in Z operatorem zakresu.. Dla kolekcji (akurat String) W dół (downto) I w górę (until)

Pętle Pętla for-in Z krokiem step Pętla while Pętla do-while

Pętle Przerwanie pętli - break Kontynuowanie wykonania pętli - continue

Pętle Pętle zagnieżdżone z etykietami

Instrukcje warunkowe Instrukcja if - jak w większości języków Instrukcja when - odpowiednik switch

Funkcje Deklarowane z użyciem słowa kluczowego fun Bez typu Z typem Wywołanie funkcji Funkcje jednoliniowe lub z inferencją

Funkcje Funkcje zagnieżdżone Mają dostęp do zmienny funkcji wyższego poziomu

Funkcje Domyślne argumenty Zmienna liczba argumentów

Wyrażenia Lambda Są to zamknięte fragmenty kodu, podobnie jak funkcje Można je przekazywać jako argumenty

Klasy Do deklaracji klasy mamy słowo kluczowe class Klasa z własnościami Klasa z metodą

Klasy Utworzenie obiektu lub Dodanie konstruktora drugiego rzędu

Klasy Konstruktorów może oczywiście być wiele

Klasy Konstruktor pierwszego rzędu można zdefiniować w deklaracji klasy

Klasy Oprócz konstruktorów klasy mogą też posiadać inicjalizator, przydatny przy wywołaniu konstruktorów pierwszego rzędu, które nie mogą zawierać własnego kodu

Klasy Dostosowany dostęp do własności - można zdefiniować własny getter i setter

Klasy Klasy zagnieżdżone Klasa wewnętrzna nie ma dostępu do klasy zewnętrznej Klasa wewnętrzna ma teraz dostęp do klasy zewnętrznej - inner

Dziedziczenie Dziedziczyć można tylko po pojedynczej klasie Aby móc dziedziczyć po klasie musi być ona zadeklarowana jako otwarta - open Gdy klasa nadrzędna ma konstruktor pierwszego rzędu sprawa się trochę komplikuje

Dziedziczenie Klasa dziedzicząca musi przeciążyć wszystkie konstruktory drugiego rzędu klasy nadrzędnej

Przykład Dziedziczenie

Dziedziczenie Przeciążanie metod - override - metoda też musi być zadeklarowana jako otwarta - open

Dziedziczenie Dodanie konstruktora drugiego rzędu

Interfejsy Kotlin oczywiście posiada interfejsy Mogą zawierać metody Mogą zwierać własności pod warunkiem: Są one abstrakcyjne Mają zdefiniowane funkcje dostępu

Interfejsy

Typy generyczne Kotlin ma pełne wsparcie typów generycznych lub z inferencją typów

Rozszerzenia Kotlin podobnie jak C# lub Swift umożliwia dodawanie rozszerzeń do istniejących typów.

Rozszerzenia Dodać można też własności

Programowanie dla Androida

Historia Opracowany pierwotnie przez firmę Android Inc. z Palo Alto (Andy Rubin, Rich Miner, Nick Sears, Chris White), założoną w 2003 r. Pierwotnie planowany jako system dla aparatów fotograficznych Dopiero później podjęto decyzję o przeniesieniu systemu dla telefonów jako konkurencji dla Symbian i Windows Mobile.

Historia W 2005 r. Google przejął firmę Android i kontynuował prace nad systemem oferując go bezskutecznie kilku producentom telefonów. 9 stycznia 2007 r. prezentacja iphone a kompletnie zrewolucjonizowała podejście Google do systemu. 23 września 2008 r. miała miejsce premiera pierwszego telefonu z Androidem HTC Dream (w Polsce Era G1).

Historia wersji WERSJA NAZWA PREMIERA POZIOM API 1.0 Brak 23.09.2008 1 1.1 (Petit Four) 9.02.2009 2 1.5 Cupcake 27.04.2009 3 1.6 Donut 15.09.2009 4 2.0-2.1 Eclair 26.10.2009 5-7 2.2-2.2.3 Froyo 20.05.2010 8 2.3-2.3.7 Gingerbread 6.12.2010 9-10 3.0-3.2.6 Honeycomb 22.02.2011 11-13 4.0-4.0.4 Ice Cream Sandwich 18.10.2011 14-15 4.1-4.3.1 Jelly Bean 9.07.2012 16-18 4.4-4.4.4 KitKat 31.10.2013 19-20 5.0-5.1.1 Lollipop 12.11.2014 21-22 6.0-6.0.1 Marshmallow 5.10.2015 23 7.0-7.1.2 Nougat 22.08.2016 24-25 8.0-8.1 Oreo 21.08-2017 26-27

Android System operacyjny oparty na jądrze Linux a. Dostosowany do obsługi za pomocą interfejsu dotykowego. Głównie przeznaczony dla platform ARM32 i ARM64. Dostępny jako open-source w ramach projektu Android Open Source Project. W praktyce część oprogramowania urządzeń jest własnościowa.

Android Android trafił też do telewizorów, komputerów, zegarków, samochodów Dystrybucja aplikacji poprzez Google Play Store (dawniej Android Market) Większość bibliotek jest napisana w C

Architektura

Programowanie Podstawowym językiem dla platformy jest od początku Java. Do wersji 4.4 za wykonanie kodu odpowiedzialna była maszyna o nazwie Dalvik. Od 4.4 odpowiada za nie Android Run Time (ART). Można też pisać kod w C/C++. Alternatywnym językiem jest obecnie Kotlin.

Programowanie Kod źródłowy w Javie/Kotlinie jest tłumaczony do postaci bytecode u (DEX) W momencie instalacji na urządzeniu DEX jest kompilowany do instrukcji procesora jako Executable and Linkable Format (ELF). W momencie uruchomienia ładowany jest kod ELF, co znacznie przyspiesza jego działanie i oszczędza baterię.

Biblioteki Zawierają w sobie wsparcie dla funkcji oferowanych przez urządzenie. Często są to wrapery dla bibliotek napisanych w C/C++

Application Framework Zawiera usługi umożliwiające uruchamianie i działanie aplikacji. Zawiera: Activity Manager - steruje cyklem życia aplikacji. Content Providers - umożliwia współdzielenie danych między modułami. Resource Manager - zarządza zasobami spoza aplikacji.

Application Framework Notifications Manager - umożliwia wyświetlanie powiadomień. View System - widoki składające się na interfejs użytkownika. Package Manager - umożliwia zarządzanie zainstalowanymi aplikacjami. Telephony Manager - obsługuje funkcjonalność telefonu. Location Manager - dostęp do usług lokalizacji.

Programowanie Twórcy Androida byli mocno nastawieni na wielokrotne wykorzystanie komponentów. Stąd program na Androida składa się z szeregu niezależnych od siebie modułów nazywanych Aktywnościami (Activities), które mogą być wielokrotnie wykorzystywane. Aktywność nie wie kiedy zostanie wywołana i nie może bezpośrednio zależeć od innych aktywności (mieć dostępu do jej metod lub pól). Aktywność dziedziczy po klasie Activity.

Aby aktywności mogły się ze sobą komunikować, muszą wykorzystywać mechanizm Intencji (Intent). Intencje zawierają opis operacji i opcjonalnie dane z nią związane. Intencja może wprost wskazać klasę, która ma zostać wywołana (explicite) albo zostawić wybór klasy ART (implicite). Intencje nadawcze (Broadcast Intents) - rozsyłają komunikaty do wszystkich aplikacji w systemie, które zapiszą się na ich nasłuchiwanie (Broadcast Receivers).

Usługi Usługa (Service) to proces, który jest pozbawiony interfejsu użytkownika i może wykonywać zadania w tle. Może zostać uruchomiony i zarządzany przez aktywność. Usługi mogą też wyświetlać wprost powiadomienia.

Manifest aplikacji Jest to plik XML opisujący aplikację. Zawiera informacje o: Aktywnościach, Usługach (Services), Odbiorcach (Brodcast Receivers), Dostawcach danych, Uprawnieniach aplikacji.

Zasoby W pakiecie aplikacji znajdują się też różne zasoby, takie jak: Łańcuchy tekstowe, Grafiki, Czcionki,

Czas życia aplikacji Mimo niezłych specyfikacji technicznych współczesnych telefonów są one nadal uważane za urządzenia o ograniczonych zasobach. Dlatego system zarządza aplikacjami inaczej niż biurkowy system operacyjny. Gdy zaczyna brakować zasobów, procesy są zabijane, a ich zasoby zwalniane. O kolejności zabijania decyduje priorytet procesu.

Czas życia aplikacji Proces pierwszoplanowy Najwyższy priorytet Proces widoczny Proces - usługa Proces w tle Proces pusty Najniższy priorytet

Czas życia aplikacji Stan aplikacji jest wprost zależny od stanu jej aktywności. W trakcie działania systemu wszystkie aktywności są przechowywane na stosie (Activity Stack). Nowa aktywność jest zawsze umieszczana na szczycie stosu. Po zamknięciu aktywności (np. przyciskiem Back ), jest ona zdejmowana ze stosu, a uaktywniana jest ta, która była poprzednio.

Czas życia aplikacji Aktywność uruchamiania Push Pop Stos aktywności Najświeższe Najstarsze Aktywność aktywna Aktywność aktywna poprzednio Aktywność Aktywność najstarsza Zabita Aktywność zamknięta lub użytkownik wrócił do poprzedniej Aktywność zabita aby uwolnić pamięć

Czas życia aplikacji Aktywność może znajdować się w jednym ze stanów: Aktywna - na szczycie stosu, widoczna na ekranie i w interakcji z użytkownikiem, Wstrzymana (Paused) - jest widoczna na ekranie, ale może być częściowo przysłonięta. W każdej chwili jest gotowa do powrotu na wierzch stosu. Zatrzymana - nie jest widoczna, jest stan jest zachowany, ale w stosunku do wstrzymanej jej usunięcie jest bardziej prawdopodobne. Zabita - aktywność została usunięta ze stosu, jej pamięć zwolniona, a ponowne wyświetlenie wymaga inicjalizacji.

Czas życia aplikacji Jeszcze jednym powodem wymuszenia przeładowania aktywności może być zmiana konfiguracji, np. zmiana orientacji ekranu, czcionki systemowej, Aktywność jest wtedy niszczona i inicjalizowana ponownie. Aktywność można skonfigurować aby była niewrażliwa na pewne zmiany.

Narzędzia programistyczne Android Studio - oficjalne środowisko IDE od Google IntelliJIDEA Eclipse Android-IDE Cordova Corona Xamarin CppDroid

Android Studio Dostosowana do potrzeb Androida wersja IntelliJ IDEA Dostępne dla Windows, macos i Linux a Początki od maja 2013 r. Aktualnie wersja 3 od października 2017 r.

Android Studio

Czas życia aktywności Obsługiwany przez metody: oncreate - wywoływana w momencie tworzenia aktywności - ma argument, w którym może otrzymać informacje o poprzednim stanie aktywności onrestart - gdy aktywność ma być wznowiona po wcześniejszym zatrzymaniu przez system onstart - uruchamiana zaraz po oncreate lub onrestart, gdy aktywność ma stać się widoczna

Czas życia aktywności onresume - aktywność jest aktualnie widoczna, a użytkownik może wchodzić z nią w interkację. onpause - gdy aktywność ma być wstrzymana. onstop - aktywność nie jest już widoczna dla użytkownika. ondestroy - aktywność zostanie zabita, z własnej inicjatywy lub przez system

Czas życia aktywności onconfigurationchanged - gdy zajdzie zmiana konfiguracji, która nie spowoduje restartu aktywności. onrestoreinstancestate - wywoływana po metodzie onstart gdy aktywność ma odtworzyć swój zachowany stan onsaveinstancestate - wywoływana przed zabiciem aktywności, gdy aktywność ma zachować swój stan dynamiczny

Czas życia aktywności Przeciążając te metody należy pamiętać, że oprócz dwóch ostatnich należy zawsze wywołać metodę odziedziczoną super.on. Standardowe kontrolki są w stanie same zachować swój stan pomiędzy zmianami stanu aktywności (można to wyłączyć - android:saveenabled= false ) Do przechowania stanu innych elementów można wykorzystać klasę Bundle

Projektowanie UI Urządzenia z Androidem mogą pracować w wielu różnych rozdzielczościach. Urządzenia mogą zmieniać orientację ekranu (pion/ poziom). Wszystkie widoczne elementy dziedziczą po klasie View. Czasami elementy są grupowane w obiekty dziedziczące po klasie ViewGroup.

Projektowanie UI W rozmieszczaniu widoków na ekranie pomagają obiekty typu LayoutManagers, będące specyficznym rodzajem ViewGroup: ContraintLayout - od Androida 7 podstawowy menedżer układu oparty na ograniczeniach LinearLayout - umieszcza elementy w wierszu lub kolumnie TableLayout - umieszcza elementy w macierzy wierszy/kolumn

FrameLayout - blokuje fragment ekranu na najczęściej jeden widok RelativeLayout - elementy rozmieszczane są względem siebie AbsoluteLayout - elementy mają podane bezwzględne współrzędne i rozmiary GridLayout - rozmieszcza elementy na kanwie o cechach macierzy. CoordinatorLayout - od Androida 5 do zarządzania paska na górze aplikacji

Domyślnie źródłowym menedżerem jest ConstraintLayout. Menedżery układu mogą się dowolnie zagnieżdżać, np. GridLayout wewnątrz TableLayout, wewnątrz ContraintLayout. Wszystkie elementy tworzą strukturę drzewa widoków.

Paleta komponentów Pasek narzędzi Atrybuty Drzewo komponentów Projektowany ekran Przełącznik trybu pracy

Design Blueprint

Widok tekstowy

Zdarzenia w Androidzie Użytkownik oraz system generują zdarzenia. Zdarzenia są kolejkowane na zasadzie FIFO. Ze zdarzeniem związane są informacje, które je opisują. Aby obsłużyć zdarzenie, obiekt (najczęściej widok) musi posiadał aktywne nasłuchiwanie (Listener) i odpowiednią do tego metodę.

Zdarzenia LISTENER METODA onclicklistener onclick() onlongclicklistener onlongclick() ontouchlistener ontouch() oncreatecontextmenulistener oncreatecontextmenu() onfocuschangelistener onfocuschange() onkeylistener onkey()

Wielodotyk Android potrafi obsłużyć na raz wiele punktów dotyku Dotyk może składać się w gest Aby przechwycić informacje o dotyku obsługujemy zdarzenie ontouch() Z dotykiem związany jest obiekt MotionEvent, który zawiera informacje o punktach dotyku aktywnych w danym momencie

Gesty Gesty (np. swipe, pinch) można rozpoznawać za pomocą klasy GestureDetectorCompat Informacje o geście musi otrzymywać klasa (niekoniecznie aktywności) posiadająca odpowiednie metody: onfling, ondown, onscroll, onshowpress, onsingletapup, onlongpress W zdarzeniu ontouch trzeba wywołać metodę klasy GestureDetectorCompat Bardziej złożone gesty można definiować samodzielnie

Fragmenty To w pełni niezależny fragment interfejsu użytkownika wraz z logiką, który można umieścić w aktywności Mogą zostać użyte tylko wewnątrz aktywności Na fragment składa się pliku XML opisujący wygląd i klasa opisująca zachowanie Dostępne od wersji 3 Android SDK

Intencje To mechanizm umożliwiający wywoływanie i komunikację pomiędzy aktywnościami Intencja umożliwia wywołanie innej aktywności aplikacji lub aktywności zarejestrowanej w systemie Umożliwiają też komunikację z usługami (Service) i odbiorcami komunikatów (Broadcast receivers)

Intencje explicite Intencje wprost odwołują się do konkretnej aktywności, podając jej dane (nazwę klasy) Najczęściej są używane do wywołania aktywności wewnątrz aplikacji Dane można przekazać przez obiekt klasy Intent, korzystając z metody putextra() Dane są przesyłane jako pary (klucz, wartość)

Intencje explicite Przydatny import Wywołanie intencji

Intencje Aby odczytać przekazane dane, klasa Activity ma własność intent, zwracającą wywołującą ją intencję W klasie Intent jest własność extras, zwracająca obiekt zawierające wszystkie przekazane dane Z niego, za pomocą metod get można odczytać dane

Intencje Aby aktywność można było wywołać, jej opis musi się znaleźć w pliku manifest

Intencje W powyższy sposób można przekazać dane tylko do aktywności wywoływanej Aby przesłać je też w drugą stronę, aktywność musi być wywołana jako pod-aktywność za pomocą metody startactivityforresult( ) Aktywność wywołana musi przeciążyć metodę finish() Aktywność wywołująca musi przeciążyć metodę onactivityresult()

Aktywność nadrzędna Intencje

Aktywność podrzędna Intencje

Intencje implicite Intencje nie-wprost nie definiują precyzyjnie klasy ale akcję i dane dla niej Np. akcja ACTION_VIEW w połączeniu z adresem URL otworzy aktywność przeglądarki

Filtry intencji Za ich pomocą aktywność może zgłosić systemowi chęć obsługi wybranych akcji Konfiguruje się je w manifeście Aktywność musi też uzyskać odpowiednie uprawnienia dla akcji