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



Podobne dokumenty
Layouty. Kilka layoutów

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

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

Laboratorium Systemów Mobilnych. Wykład 1

Systemy operacyjne na platformach mobilnych

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

Systemy operacyjne na platformach mobilnych

[Android] Podstawy programowania

Systemy operacyjne na platformach mobilnych

Powiadomienia w systemie Android

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

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

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

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

Mechanizm powiadomień

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

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

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

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

Laboratorium Systemów Mobilnych. Wykład 2

Systemy operacyjne na platformach mobilnych

Android pierwsza aplikacja

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

akademia androida Pierwsze kroki w Androidzie część I

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

Obsługa SMS i telefonii

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

Fragmenty są wspierane od Androida 1.6

RESTful Android. Na co zwrócić uwagę przy tworzeniu aplikacji klienckich REST na Androidzie

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

akademia androida Intencje oraz URI część III

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

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

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:

ANDROID. OpenGL ES 1.0. Tomasz Dzieniak

Podstawowe elementy GUI - zadania

PROGRAMOWANIE MOBILNE: ANDROID. Marcin Luckner

akademia androida Http i AsyncTask część VII

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

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

Mobilne aplikacje multimedialne

Spis treści. Programowanie aplikacji na platformę Android v 1.0. A.Klusiewicz

akademia androida Składowanie danych część VI

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

WSTĘP DO ANDROIDA. Laboratorium

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

Podstawowe elementy GUI cz. 2 i 3 - zadania

Mechanizm zapisu preferencji

Podstawowe elementy GUI - zadania

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

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

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

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

MonoGame. Wieloplatformowe gry w C# Mateusz Cicheński

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

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

Wykorzystanie plików

Programowanie aplikacji mobilnych

Agenda. Wprowadzenie do Androida

Android, wprowadzenie do SDK

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.

Programowanie dla Androida. Ubiquitous

Lokalizacja Oprogramowania

Czym jest Android Architektura systemu Cechy platformy Android

Złożone komponenty JSF wg

Kontakt. Krzysztof Bzowski Tel B5 / 605

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

akademia androida Sensory część V Mobile Applications Developers

Programowanie urządzeń mobilnych w systemie Android

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

Tworzenie dialogów i wykorzystanie klasy Toast

Złożone komponenty JSF wg

Warsztaty v2 Layout y i widget y. Tomasz Wachowski Kamil Snopek Jan Romaniak

Projektowanie, tworzenie aplikacji mobilnych na platformie Android

Opis aplikacji Lokalizator. 7 stycznia 2014

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Spis treści. Programowanie aplikacji na platformę Android. A.Klusiewicz

Dlaczego Android? Uczę się Javy więc piszę.. w Androidzie. Nie mam telefonu z Androidem!

1. Metryki złożoności modułowej i międzymodułowej Chidamber & Kemerer (CK)

Extensible Markup Language (XML) Wrocław, Java - technologie zaawansowane

Analizując żądania za pomocą narzędzi developerskich można odczytać listę preferowanych języków, jak na poniższym przykładzie.

Wirtualne drukarki konwertujące pliki aplikacji do formatu *.pdf i formatów graficznych

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

Metryki. Narzędzia do pomiaru złożoności modułowej i międzymodułowej oprogramowania. autor: Zofia Kruczkiewicz

Wykorzystanie map i geolokalizacji

Programowanie Multimediów. Programowanie Multimediów JAVA. wprowadzenie do programowania (3/3) [1]

Programowanie dla iphone projektowanie interfejsu użytkownika

Systemy operacyjne na platformach mobilnych

Android - wprowadzenie. Łukasz Przywarty

Dynamiczne i wydajne tworzenie interfejsu. Piotr Michałkiewicz

Zaawansowane aplikacje WWW - laboratorium

TWORZENIE PREZENTACJI MS POWERPOINT

Laboratorium 1 - Programowanie proceduralne i obiektowe

Android i Bluetooth Low Energy. Laboratorium 4 Niestacjonarne

Tłumaczenie i adaptacja materiałów: dr Tomasz Xięski. Na podstawie prezentacji udostępnionych przez Victor Matos, Cleveland State University.

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

Programowanie Urządzeń Mobilnych. Laboratorium nr 11, 12

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład.

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

Transkrypt:

Wsparcie dla różnych urządzeń Android występuje obecnie w całej gamie różnych urządzeń. Urządzenia te różnią się: wielkością ekranu, gęstością pikseli, hardware'em, wspieranym sdk Dodatkowo urządzenia te mogą być posiadać system w różnych wersjach językowych SDK pozwala przystosować aplikację do większości tych wypadków

Wspieranie różnych języków Łańcuchy znaków z UI zawsze powinniśmy trzymać w zewnętrznym pliku Tworząc projekt wykorzystując SDK automatycznie tworzony jest folder res/ w którym znajduje się kilka domyślnych folderów i plików, jak np. res/values/strings.xml. Aby dodać wsparcie dla większej ilości języków najpierw musimy znać ich kody alfa-2: http://pl.wikipedia.org/wiki/iso_3166-1 Stąd wiemy np., że Polska ma PL, Francja: FR

Zakładając, że nasza aplikacja domyślnie ma być po angielsku, ale wspierać polski i francuski nasza struktura folderu res powinna być następująca: res/ values/ strings.xml values-pl/ strings.xml values-fr/ strings.xml

Każdy z tych stringów powinien mieć wartości w odpowiednim języku: Angielski, domyślny: /values/strings.xml <?xml version="1.0" encoding="utf-8"?> <resources> <string name="title">my Application</string> <string name="hello_world">hello World!</string> </resources>

Polski: /values-pl/strings.xml <?xml version="1.0" encoding="utf-8"?> <resources> <string name="title">moja Aplikacja</string> <string name="hello_world">witaj Świecie!</string> </resources>

Francuski: /values-fr/strings.xml <?xml version="1.0" encoding="utf-8"?> <resources> <string name="title">mon Application</string> <string name="hello_world">bonjour le monde!</string> </resources>

Znacznik językowy możemy stosować dla każdego typu zasobów z folderu res możemy np. dostarczyć różne bitmapy w zależności od języka systemu operacyjnego. Dzięki takiemu rozwiązaniu odwołując się do stringa w kodzie nie musimy przejmować się językiem android zrobi to automatycznie za nas.

Z poziomu kodu: Przykłady odwołań do zasobów: String hello = getresources().getstring(r.string.hello_world); TextView textview = new TextView(this); textview.settext(r.string.hello_world);

Lub w XML-u: <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" />

Wspieranie ekranów Android dzieli urządzenia według dwóch cech: rozmiaru ekranu oraz gęstości pikseli (dpi). Android uruchamiając aplikacje na różnych urządzeniach będzie skalował ją tak aby pasowała, ale zawsze powinno się przygotować różne wersje layoutu pod różne urządzenia aby zoptymalizować wrażenia użytkownika.

Ekrany dzielimy na: small, normal, large, xlarge Gęstości na: low (ldpi), medium (mdpi), high(hdpi), extra high (xhdpi) Orientacja 'portrait' i 'landscape' są także traktowane jak osobne layouty (domyślnie layout jest robiony jako portrait, suffiks -land definiuje layout dla landscape. Należy przygotować alternatywne wersje layoutów oraz bitmap i umieścić je w osobnych folderach, podobnie jak miało to miejsce z językami

Tworzenie różnych layoutów Aby stworzyć różne wersje layoutów umieszczamy je w odpowiednim folderze z sufiksem -<screen_size> w nazwie. Na przykład layout dla dużych ekranów powinien być zapisany w res/layout-large, czyli nasza struktura folderów powinna wyglądać następująco: res/ layout/ main.xml /ayout-large/ main.xml

W kodzie odnosimy się do layoutu tak jak robiliśmy to do tej pory: @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); }

Inny przykład: res/ layout/ main.xml layout-land/ main.xml layout-large/ main.xml layout-large-land/ main.xml

Bitmapy Tworząc bitmapy dobrze jest mieć główny plik w wysokiej rozdzielczości albo w wersji wektorowej i następnie dopasowywać go do gęstości ekranu według: xhdpi: 2.0 hdpi: 1.5 mdpi: 1.0 ldpi: 0.75 Czyli bitmapa rozmiaru 200x200 dla xhdpi, powinna mieć rozmiar 150x150 dla hdpi, 100x100 dla mdpi, 75x75 dla ldpi. Następnie pliki te wstawiamy do odpowiednich folderów:

res/ drawable-xhdpi/ image.png drawable-hdpi/ image.png drawable-mdpi/ image.png drawable-ldpi/ image.png Zasoby ldpi można czasami pominąć android automatycznie przeskaluje hdpi do ekranów ldpi.

ldpi mdpi tvdpi hdpi xhdpi xxhdpi Total Small 9.4% 9.4% Normal 0.1% 15.3% 33.5% 22.8% 7.7% 79.4% Large 0.6% 3.5% 1.2% 0.5% 0.6% 6.4% Xlarge 4.4% 0.3% 0.1% 4.8% Total 10.1% 23.2% 1.2% 34.3% 23.5% 7.7%

Przykład aplikacji bez obsługi ekranów/gęstości: Z obsługą:

Różne platformy W AndroidManifest.xml mamy określone obsługiwane przez nasza aplikację wersje Androida. Dla przykładu: <manifest xmlns:android="http://schemas.android.com/apk/res/android"... > <uses-sdk android:minsdkversion="4" android:targetsdkversion="15" />... </manifest>

Zawsze powinniśmy starać się aby nasza aplikacja była stworzona pod najnowszą wersję androida (target), ale przy okazji obsługiwała co najmniej 90% urządzeń z androidem. Version Codename API Distribution 2.2 Froyo 8 2.2% 2.3.3-2.3.7 Gingerbread 10 28.5% 3.2 Honeycomb 13 0.1% 4.0.3-4.0.4 Ice Cream Sandwich 15 20.6% 4.1.x 16 36.5% 4.2.x Jelly Bean 17 10.6% 4.3 18 1.5%

Android umożliwia sprawdzać w wersję api w czasie uruchamiania aplikacji: private void setupactionbar() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { ActionBar actionbar = getactionbar(); actionbar.setdisplayhomeasupenabled(true); } W plikach XML-owych także można spokojnie używać znaczników z nowszych wersji SDK bez obawy o działanie aplikacji na starszych systemach znaczniki te zostaną zignorowane.

Style/Motywy Android pozwala stosować specjalne style/motywy które umożliwiają utrzymanie wyglądu aplikacji na poziomie zgodnym z aktualną wersją systemu. Na przykład: <activity android:theme="@android:style/theme.dialog"> Powoduje, że aktywność otrzyma motyw domyślnego dialog boxa. <activity android:theme="@android:style/theme.translucent"> Powoduje zastosowanie przeźroczystego tła

<activity android:theme="@style/customtheme"> Umożliwia nałożenie na aktywność własnego motywu zdefiniowanego w /res/values/styles.xml <application android:theme="@style/customtheme"> Nałożenie własnego motywu na całą aplikacje.