AndroidManifest.xml. Plik manifestu opisuje podstawowe charakterystyki aplikacji i definiuje jej komponenty.

Podobne dokumenty
Laboratorium Systemów Mobilnych. Wykład 1

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

Wsparcie dla różnych urządzeń. SDK pozwala przystosować aplikację do większości tych wypadków

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:

Powiadomienia w systemie Android

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

Systemy operacyjne na platformach mobilnych

Fragmenty są wspierane od Androida 1.6

akademia androida Intencje oraz URI część III

Programowanie urządzeń mobilnych. dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusza Mikody

Systemy operacyjne na platformach mobilnych

Layouty. Kilka layoutów

Android pierwsza aplikacja

Android. Podstawy tworzenia aplikacji. Piotr Fulma«ski. March 4, 2015

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

Obsługa SMS i telefonii

Programowanie urządzeń mobilnych w systemie Android. Ćwiczenie 7 Wykorzystanie układu LinearLayout

[Android] Podstawy programowania

Systemy operacyjne na platformach mobilnych

Systemy operacyjne na platformach mobilnych

Podstawowe elementy GUI - zadania

Mechanizm powiadomień

Tworzenie wydajnych interfejsów. Autorzy: Piotr Michałkiewicz, 2 rok AiR Daniel Maksymow, 2 rok Informatyki

Programowanie urządzeń mobilnych w systemie Android. Ćwiczenie 8 Wykorzystanie układu RelativeLayout

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

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

Laboratorium Systemów Mobilnych. Wykład 2

akademia androida Pierwsze kroki w Androidzie część I

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

Laboratorium 7 Blog: dodawanie i edycja wpisów

WSTĘP DO ANDROIDA. Laboratorium

Systemy operacyjne na platformach mobilnych

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

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

Programowanie urządzeń mobilnych. dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusza Mikody

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

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

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

Tworzenie natywnych aplikacji na urządzenia mobilne - PhoneGap Tomasz Margalski

Dynamiczne i wydajne tworzenie interfejsu. Piotr Michałkiewicz

Laboratorium 8 ( Android -pierwsza aplikacja)

Mobilne aplikacje multimedialne

Budowa aplikacji z graficznym interfejsem użytkownika - GUI (Graphic User Interface)

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

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

Instrukcja implementacji sterownika wirtualnego portu szeregowego dla systemu Android. Opracowanie: Elzab Soft sp. z o.o.

Programowanie urządzeń mobilnych

Android, wprowadzenie do SDK

Podstawowe kontrolki i ich obsługa

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

Tworzenie dialogów i wykorzystanie klasy Toast

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

Podstawowe elementy GUI - zadania

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

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

akademia androida Http i AsyncTask część VII

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

PHP 5 język obiektowy

akademia androida Składowanie danych część VI

JAVA : TELEFONY KOMÓRKOWE I ANDROID 1. WSTĘP

Przykładowa dostępna aplikacja w Visual Studio - krok po kroku

Szybciej (pisać) Łatwiej (czytać) Prościej (utrzymywać) Marcin Wąsowski Amsterdam Standard Sp. z o.o.

ANDROID. OpenGL ES 1.0. Tomasz Dzieniak

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

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

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

Połączenie aplikacji mobilnej z Facebookiem

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

Budowa aplikacji wielowarstwowych zastosowanie szablonów. Laboratorium 2 Programowanie komponentowe Zofia Kruczkiewicz

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki

Delphi podstawy programowania. Środowisko Delphi

Instalujemy środowisko. Hello World! Odczyt/zapis informacji do komponentów na formie. onclick()

Aplikacje w środowisku Java

3.4. Opis konfiguracji layoutów.

Programowanie dla Androida. Ubiquitous

Laboratorium 1 - Programowanie proceduralne i obiektowe

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

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

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

Instrukcja obsługi DHL KONWERTER 1.6

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

Mechanizm zapisu preferencji

Języki i metody programowania Java. Wykład 2 (część 2)

Zdarzenia Klasa Application Powiadomienia Toast AlertDialog

Architektura interfejsu użytkownika

Android i Bluetooth Low Energy. Laboratorium 4 Niestacjonarne

Programowanie aplikacji mobilnych

Instrukcja obsługi Multiconverter 2.0

Wykorzystanie plików

PROJEKTOWANIE APLIKACJI INTERNETOWYCH

Wątki w Android OS. Matt Rutkowski. GynSoft sp. z o.o. matt@gynsoft.net

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

Baza danych sql. 1. Wprowadzenie

Oracle Application Express

E:\DYDAKTYKA\ZAI\ZWWW\Laboratoria\L07\Java Persistence.doc 2011-lis-24, 17:0 Zaawansowane aplikacje internetowe Laboratorium Java Persistence.

BEAN VALIDATION. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

Programowanie aplikacji mobilnych

Archiwum DG 2016 PL-SOFT

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

Zaawansowane aplikacje WWW - laboratorium

Transkrypt:

AndroidManifest.xml Plik manifestu opisuje podstawowe charakterystyki aplikacji i definiuje jej komponenty. Jednym z najważniejszych elementów jest element <uses-sdk> który deklaruje kompatybilność z innymi wersjami androida. android:minsdkversion określa minimalna wersje z która aplikacja jest kompatybilna, android:targetsdkversion oznacza docelową wersje. Zawsze powinno się docelową kompatybilność ustawiać na najwyższą.

Foldery w projekcie: src/ główne pliki źródłowe, domyślnie zawiera klasę aktywności która uruchamia się przy uruchamianiu aplikacji res/ Zawiera pod foldery z zasobami aplikacji, na przykład: drawable-hdpi/ Folder zawierający obiekty rysowane (np. bitmapy), na urządzenia z dużą gęstością pikseli (hdpi) layout/ Folder z plikami definiującymi interfejs użytkownika values/ Folder zawiera pliki XML zawierającym kolekcje danych, definicje kolorów, stringi itd.

Przy uruchamianiu domyślnej aplikacji androidowej, uruchamiana jest najpierw domyślna klasa aktywności (Activity class). Klasa ta wgrywa plik layoutu który wyświetla Hello World.

Graficzny interfejs użytkownika w aplikacjach androidowych budowany jest wykorzystując hierarchie widoków (View) oraz grup widoków (ViewGroup). Obiekty widoku to zazwyczaj takie elementy UI jak przyciski albo pola tekstowe. Obiekty widoku grupy to niewidzialne pojemniki definiujące w jaki sposób podrzędne widoki są ustawione na siatce albo pionowej liście.

Przykład aplikacji z liniowym UI <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > </LinearLayout>

LinearLayout jest grupa widoku która układa podrzędne widoki w pionie lub poziomie, zgodnie z atrybutem android:orientation. Wszystkie dzieci pokazują się zgodnie z kolejnością wpisania w xmlu. Atrybuty android:layout_width oraz android:layout_height oznaczają wielkość i są wymagane. Ponieważ LinearLayout jest głównym widokiem, powinno zapełniać cały ekran, dlatego ustawiamy match_parent. Wartość ta oznacza ze widok jest rozszerzony aby dopasować się do widoku nadrzędnego.

Dodając poniższe wewnątrz <LinearLayout> otrzymamy pole tekstowe <EditText android:id="@+id/edit_message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="@string/edit_message" /> android:id daje polu unikatowy identyfikator którzy umożliwia tworzenie odwołań do obiektu z poziomu kodu. Znak małpy jest wymagany podczas odwoływania się do zasobów za pomocą XML-a. Za znakiem @ znajduje się typ (np. id albo string), potem slash (/) i nazwa zasobu (edit_message). Znak + przed typem jest potrzebny tylko przy definiowaniu ID zasobów po raz pierwszy. Podczas kompilowania aplikacji SDK

używa ID do stworzenia nowego ID zasobu w folderze gen/r.java. Atrybuty wrap_content użyte zamiast wysokości i szerokości określają, że elementy powinny być tylko tak duże, aby zmieścić się w widoku. (Gdybyśmy użyli zamiast tego match_parent wówczas element zapełniłby cały ekran przyjmując rozmiar rodzica -LinearLayout. android:hint String który ma zostać wypisany jeżeli pole tekstowe jest puste. Wartości @string/edit_message odwołują się do danych z folderu res/values/strings.xml, aby poprawnie skompilować program, musimy je tam dodać:

<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">my First App</string> <string name="edit_message">enter a message</string> <string name="button_send">send</string> <string name="action_settings">settings</string> <string name="title_activity_main">mainactivity</string> </resources>

Ostatnim elementem będzie przycisk, w tym celu w <EditText> dopisujemy: <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button_send" />

Aby rozszerzyć długość pola tekstowego na całą dostępna wielkość należy nadać mu pewną wagę. Domyślnie wszystkie elementy mają wagę ustawioną na 0. Ustawienie czegokolwiek większego dla tylko jednego elementu spowoduje rozszerzenie go na cały wolny obszar: <EditText android:layout_weight="1" android:layout_width="0dp" Ustawienie szerokości na 0 przyspiesza generowanie UI w porównaniu do wcześniejszego wrap_content.

Aby odpowiedzieć na naciśnięcie przycisku należy dodać w pliku activity_main.xml android:onclick do elementu <Button /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button_send" android:onclick="sendmessage" />

Atrybut sendmessage jest nazwą metody w naszej aktywności która wywoła system po wciśnięciu buttona. Aktywność nasza znajduje się w src/mainactivity. Musimy tam dodać odpowiednią metodę: /** Uruchamiane po wcisnieciu przycisku */ public void sendmessage(view view) { // zrob cos po wcisnieciu przycisku }

Metoda z poprzedniego slajdu wymaga zaimportowania klasy View: import android.view.view; Co można zrobić automatycznie wciskając Ctrl+Shift+O Aby metoda ta odpowiadała metodzie wywoływanej w android:onclick musi ona być publiczna, zwracać void i mieć View jako jedyny parametr.

W celu połączenia ze sobą dwóch komponentów (np. dwie czynności) musimy wykorzystać tak zwany intent ('intencja'). Reprezentuje on 'intencje aplikacji' do zrobienia czegoś. Wewnątrz utworzonego przed chwilą sendmessage() tworzymy obiekt Intent: Intent intent=new Intent(this, DisplayMessageActivity.class); Jej konstruktor przyjmuje dwa parametry: Kontekst oraz klasę komponentu aplikacji do którego wysyłamy nasz intent (w naszym przypadku ma być wysłany do nowej aktywności, która jeszcze nie istnieje).

Dodatkowo Intent potrafi poza uruchamianiem aktywności dostarczyć także pewne dane, nasz intent 'przewiezie' zawartość pola tekstowego: Intent intent = new Intent(this, DisplayMessageActivity.class); EditText edittext = (EditText) findviewbyid(r.id.edit_message); String message = edittext.gettext().tostring(); intent.putextra(extra_message, message); Metoda putextra() przyjmuje wartość pewnego klucza w pierwszym parametrze oraz jego wartość jako drugi parametr.

Aby nasz intent zadziałał i poprawnie przeniósł dane musimy zdefiniować odpowiedni klucz, w naszym przypadku np.: public class MainActivity extends Activity { public final static String EXTRA_MESSAGE = "com.example.myfirstapp.message";... } Dobra praktyką jest nazywanie kluczy używając nazwy pakietu jako prefiksu w przypadku gdyby nasz program działał z innymi.

Aby uruchomić drugą aktywność wystarczy dodać kolejną linijkę do sendmessage(): startactivity(intent);

Jedyne czego nam brakuje to klasa DisplayMessageActivity. Najpierw dodajemy nową aktywność: 1. New->Android->Activity 2. BlankActivity 3. Project: NazwaJakaś Activity Name: DisplayMessageACtivity Layout Name: activity_display_message Title: tytul Hierarchial Parent: com.example.myfirstap.mainactivity Navigation Type: None 4. Finish

W naszym programie będziemy korzystać z API ActionBar który wymaga androida w wersji co najmniej honeycomb (api level 11). W tym celu musimy wokół metody getactionbar() sprawdzić którą wersję API mamy. Wymagane jest także dodanie @SuppressLint( NewApi ) w celu uniknięcia błędów.

Po powyższych zmianach dostajemy nową aktywność: public class DisplayMessageActivity extends Activity { @SuppressLint("NewApi") @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_display_message); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { // Pokarz przycisk do gory w action barze: getactionbar().setdisplayhomeasupenabled(true); } }...

Wszystkie aktywności muszą być zadeklarowane w pliku manifestu, Eclipse wpis do manifestu powinien zrobić automatycznie: <application... >... <activity android:name="com.example.myfirstapp.displaymessageactivity" android:label="@string/title_activity_display_message" android:parentactivityname="com.example.myfirstapp.mainactivity" > <meta-data android:name="android.support.parent_activity" android:value="com.example.myfirstapp.mainactivity" /> </activity> </application>

Atrybut android:parentactivityname oznacza aktywność nadrzędną. System wykorzystuje te informację do nawigowania po programie (np. wstecz).

Następnym krokiem jest wydobycie informacji z intentu wewnątrz metody oncreate() klasy DisplayMessageActivity: Intent intent = getintent(); String message = intent.getstringextra(mainactivity.extra_message);

Na koniec musimy wygenerować widget TextView i ustawić jego tekst za pomocą metody settext(). Dalej TextView ustawiamy jako główny element aktywności za pomocą setcontentview(): @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); // Wiadomosc z intentu Intent intent = getintent(); String message = intent.getstringextra(mainactivity.extra_message); // Tworzenie widoku tekstu TextView textview = new TextView(this); textview.settextsize(40); textview.settext(message); // Wyswietlenie widoku tekstu setcontentview(textview); }