Android. Hierarchie widoków i ich wy±wietlanie. Piotr Fulma«ski. March 14, 2016

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

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

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

Podstawy modelowania w j zyku UML

Podstawy modelowania w j zyku UML

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

Wstawianie gotowych rysunków w texu - informacje podstawowe.

Systemy operacyjne na platformach mobilnych

Android. Zarz dzanie cyklem»ycia i stanem. Piotr Fulma«ski. March 10, 2015

Baza danych - Access. 2 Budowa bazy danych

MiASI. Modelowanie systemów informatycznych. Piotr Fulma«ski. 18 stycznia Wydziaª Matematyki i Informatyki, Uniwersytet Šódzki, Polska

Model obiektu w JavaScript

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

Lekcja 12 - POMOCNICY

Listy Inne przykªady Rozwi zywanie problemów. Listy w Mathematice. Marcin Karcz. Wydziaª Matematyki, Fizyki i Informatyki.

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

Layouty. Kilka layoutów

i, lub, nie Cegieªki buduj ce wspóªczesne procesory. Piotr Fulma«ski 5 kwietnia 2017

1 Klasy. 1.1 Denicja klasy. 1.2 Skªadniki klasy.

x y x y x y x + y x y

Wska¹niki, tablice dynamiczne wielowymiarowe

Zarz dzanie rm. O zarz dzaniu ogólnie. Piotr Fulma«ski. February 26, 2014

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

Aktualizacja CSP do wersji v7.2. Sierpień 2014

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

Listy i operacje pytania

Lekcja 9 - LICZBY LOSOWE, ZMIENNE

Technologie Informacyjne

A = n. 2. Ka»dy podzbiór zbioru sko«czonego jest zbiorem sko«czonym. Dowody tych twierdze«(elementarne, lecz nieco nu» ce) pominiemy.

Laboratorium Systemów Mobilnych. Wykład 1

Technologie Informacyjne

Materiaªy do Repetytorium z matematyki

Zarz dzanie rm. Zasada 2: samoorganizuj ce si zespoªy. Piotr Fulma«ski. March 22, 2016

PRZYPOMNIENIE Ka»d przestrze«wektorow V, o wymiarze dim V = n < nad ciaªem F mo»na jednoznacznie odwzorowa na przestrze«f n n-ek uporz dkowanych:

KLASYCZNE ZDANIA KATEGORYCZNE. ogólne - orzekaj co± o wszystkich desygnatach podmiotu szczegóªowe - orzekaj co± o niektórych desygnatach podmiotu

Podstawowe elementy GUI - zadania

Systemy operacyjne na platformach mobilnych

Dynamiczne i wydajne tworzenie interfejsu. Piotr Michałkiewicz

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

Zarz dzanie rm. Zasada 7: interaktywna komunikacja. Piotr Fulma«ski. April 22, 2015

Lekcja 3 Banki i nowe przedmioty

Wykªad 4. Funkcje wielu zmiennych.

Wprowadzenie do klasy Beamer w L A TEX

Zadania do wykonaj przed przyst!pieniem do pracy:

Przewodnik u»ytkownika

Numeryczne zadanie wªasne

Ukªady równa«liniowych

Rozwi zywanie Ukªadów Równa«Liniowych Ax=B metod dekompozycji LU, za pomoc JAVA RMI

Zadania z kolokwiów ze Wst pu do Informatyki. Semestr II.

[Android] Podstawy programowania

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

Subversion - jak dziaªa

Bazy danych. Andrzej Łachwa, UJ, /15

ZAŠ CZNIK DANYCH TECHNICZNYCH

ECDL Advanced Moduł AM3 Przetwarzanie tekstu Syllabus, wersja 2.0

Spis tre±ci. 1 Wst p Zawarto± rozdziaªów Projekt LoXiM... 2

Użytkowanie elektronicznego dziennika UONET PLUS.

Wzorce projektowe strukturalne cz. 1

ANALIZA NUMERYCZNA. Grzegorz Szkibiel. Wiosna 2014/15

2 Liczby rzeczywiste - cz. 2

Ekstremalnie fajne równania

2. L(a u) = al( u) dla dowolnych u U i a R. Uwaga 1. Warunki 1., 2. mo»na zast pi jednym warunkiem: L(a u + b v) = al( u) + bl( v)

geometry a w przypadku istnienia notki na marginesie: 1 z 5

Przetwarzanie sygnaªów

Program Sprzeda wersja 2011 Korekty rabatowe

Wykªad 7. Ekstrema lokalne funkcji dwóch zmiennych.

MiASI. Modelowanie analityczne. Piotr Fulma«ski. 18 stycznia Wydziaª Matematyki i Informatyki, Uniwersytet Šódzki, Polska

Ekonometria. wiczenia 1 Regresja liniowa i MNK. Andrzej Torój. Instytut Ekonometrii Zakªad Ekonometrii Stosowanej

Bash i algorytmy. Elwira Wachowicz. 20 lutego

Rozdziaª I. Postanowienia wst pne

Programowanie dla Androida. Ubiquitous

1. Wprowadzenie do C/C++

Programowanie i struktury danych

Spis treści. Rozdział 1 ewyniki. mmedica - INSTR UKC JA UŻYTKO W NIKA

Android pierwsza aplikacja

Logika dla matematyków i informatyków Wykªad 1

Tworzenie aplikacji webowych w oparciu o framework ObjectLedge

Programowanie wspóªbie»ne

MiASI. Modelowanie integracji systemów. Piotr Fulma«ski. 26 stycznia Wydziaª Matematyki i Informatyki, Uniwersytet Šódzki, Polska

Informatyka, matematyka i sztuczki magiczne

SVN - wprowadzenie. 1 Wprowadzenie do SVN. 2 U»ywanie SVN. Adam Krechowicz. 16 lutego Podstawowe funkcje. 2.1 Windows

obsług dowolnego typu formularzy (np. formularzy ankietowych), pobieranie wzorców formularzy z serwera centralnego,

Lekcja 9 Liczby losowe, zmienne, staªe

System zarządzania bazą danych (SZBD) Proces przechodzenia od świata rzeczywistego do jego informacyjnej reprezentacji w komputerze nazywać będziemy

STRUKTURY DANYCH. dane wej±ciowe problemu, ewentualne dane po±rednie, dane wynikowe (czyli rozwi zanie problemu).

Android poradnik programisty

1. Odcienie szaro±ci. Materiaªy na wiczenia z Wprowadzenia do graki maszynowej dla kierunku Informatyka, rok III, sem. 5, rok akadem.

Informacje pomocnicze

2 Skªadnia polece«w pliku

8. Konfiguracji translacji adresów (NAT)

wiczenie nr 3 z przedmiotu Metody prognozowania kwiecie«2015 r. Metodyka bada«do±wiadczalnych dr hab. in». Sebastian Skoczypiec Cel wiczenia Zaªo»enia

epuap Ogólna instrukcja organizacyjna kroków dla realizacji integracji

Tworzenie bazy danych Biblioteka tworzenie tabel i powiza, manipulowanie danymi. Zadania do wykonani przed przystpieniem do pracy:

Lekcja 6 Programowanie - Zaawansowane

Elementy geometrii w przestrzeni R 3

Systemy mikroprocesorowe - projekt

1 Intefejsy graczne. 1.1 Okienka. 1.2 Komponenty

Zadania z z matematyki dla studentów gospodarki przestrzennej UŠ. Marek Majewski Aktualizacja: 31 pa¹dziernika 2006

Instrukcja obsługi programu DIALux 2.6

Transkrypt:

Android Hierarchie widoków i ich wy±wietlanie Piotr Fulma«ski Instytut Nauk Ekonomicznych i Informatyki, Pa«stwowa Wy»sza Szkoªa Zawodowa w Pªocku, Polska March 14, 2016

Table of contents

xxx Co w tym wykªadzie

Hierarchie widoków i ich wy±wietlanie Widoki w Androidzie s zwykle deniowane deklaratywnie w formacie XML. Wewn trznie interfejs u»ytkownika ka»dej aplikacji na Android jest reprezentowany jako drzewo obiektów klasy View. Jest to tak zwana hierarchia widoków lub drzewo widoków. Korze«ka»dego drzewa widoków (i interfejsu u»ytkownika ka»dej aplikacji) to jeden obiekt klasy DecorView. Jest to wewn trzna klasa frameworku, której nie mo»na bezpo±rednio u»ywa. Reprezentuje ona bie» ce widoczne okno urz dzenia.

Ukªad a mened»er ukªadu Kiedy mówimy o ukªadzie, mamy na my±li zestaw wszystkich widoków jednej aktywno±ci uporz dkowanych za pomoc pliku XML ukªadu. Plik ten znajduje si w katalogu res/layout. Nie nale»y myli takich ukªadów z konkretnymi klasami ukªadu, tak zwanymi mened»erami ukªadu. Ukªad aktywno±ci (w zale»no±ci od stopnia skomplikowania) mo»e obejmowa wiele mened»erów ukªadu. Mened»er ukªadu jest tak»e obiektem klasy View (a dokªadniej klasy ViewGroup). Peªni funkcj kontenera i porz dkuje widoki w okre±lony sposób.

Atrybuty i parametry ukªadu Ka»dy ukªad w widoku mo»e mie atrybuty dwóch rodzajów wªa±ciwe dla klasy widoku i klas bazowych oraz wªa±ciwe dla mened»era ukªadu, w którym dany widok si znajduje. Atrybuty dost pne dla widoku mo»na znale¹ w jego dokumentacji. Parametry ukªadu wygl daj inaczej. Mo»na odró»ni je od zwykªych z uwagi na przedrostek layout_. Parametry okre±laj, w jaki sposób widok nale»y wy±wietli w ukªadzie.

Marginesy zewn trzne i wewn trzne Parametry okre±laj ce szeroko± i wysoko± musz wyst powa w ka»dym widoku. Przyjmuj nie tylko warto±ci liczbowe (w pikselach), ale te» dwie zarezerwowane warto±ci: fill_parent. Okre±la,»e widok zajmuje maksymalny dost pny obszar w widoku nadrz dnym. Próbuje wypeªni obszar widoku nadrz dnego (z pomini ciem marginesów wewn trznych i zewn trznych) niezale»nie od miejsca zajmowanego przez wªasne elementy podrz dne. wrap_content. Okre±la,»e widok zajmuje w widoku nadrz dnym tyle miejsca, ile potrzeba na wy±wietlenie caªej zawarto±ci.

Mened»ery ukªadów FrameLayout Jest to najprostszy z wszystkich mened»erów ukªadu. FrameLayout nie wykonuje»adnych operacji na ukªadzie i peªni tylko funkcj kontenera (ramki; ang. frame). Mened»er FrameLayout wy±wietla jeden element podrz dny naraz. Obsªuguje wiele elementów podrz dnych, umieszczanych jeden na drugim. Elementy podrz dne s wyrównywane do lewego górnego rogu i wy±wietlane jeden na drugim zgodnie z kolejno±ci ich deklaracji.

Mened»ery ukªadów Frame layout <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/an android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="150px" android:layout_height="150px" android:background="@android:color/darker_gray" <TextView android:layout_width="75px" android:layout_height="75px" android:background="@android:color/white" </FrameLayout>

Mened»ery ukªadów LinearLayout LinearLayout to najcz ±ciej stosowany mened»er ukªadu. Jest prosty, ªatwy w u»yciu i peªni wiele funkcji. W mened»erze LinearLayout wszystkie widoki s wy±wietlane w wierszach lub kolumnach (zale»y to od warto±ci atrybutu android:orientation). Je±li nie okre±lono bezpo±rednio orientacji, elementy domy±lnie rozmieszczane s w poziomie. Mened»er LinearLayout ma dwa dodatkowe parametry ukªadu, które mo»na stosowa do jego elementów podrz dnych.

Mened»ery ukªadów LinearLayout android:layout_weight Informuje mened»er ukªadu o tym, ile miejsca powinien zajmowa widok wzgl dem siostrzanych widoków. Wielko± widoku jest okre±lana na podstawie stosunków wag widoków. Je±li na przykªad wszystkie widoki maj t sam wag, dost pny obszar jest dzielony mi dzy nie po równo. To, którego wymiaru maj dotyczy wagi (szeroko±ci czy wysoko±ci), mo»na kontrolowa przez ustawienie odpowiedniej warto±ci dla danego wymiaru na 0px. Warto zauwa»y,»e wagi nie musz sumowa si do 1, cho standardowo s rozdzielane mi dzy wszystkie elementy podrz dne jako uªamki liczby 1 (semantyka oparta na procentach). Istotne s stosunki warto±ci przypisanych poszczególnym widokom. android:layout_gravity Informuje mened»er ukªadu, w którym kierunku widoki powinny by rozmieszczane w kontenerze. Atrybut ten ma znaczenie tylko wtedy, kiedy wielko± widoku w danym wymiarze jest albo ±ci±le okre±lona, albo ma warto± wrap_content.

Mened»ery ukªadów LinearLayout <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/a android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="0px" android:layout_height="100px" android:layout_weight="0.5" android:background="@android:color/darker_gray" <TextView android:layout_width="0px" android:layout_height="100px" android:layout_weight="0.5" android:background="@android:color/white" </LinearLayout>

Mened»ery ukªadów TableLayout Klasa TableLayout jest klas typu LinearLayout (dziedziczy po niej) wzbogacon o mechanizmy przydatne do wy±wietlania tabel lub siatek. Zastosowano tu specjaln klas widoku, TableRow, peªni c funkcj kontenera na komórki tabeli. Ka»da komórka mo»e obejmowa tylko jeden widok. Widok ten mo»e by oparty na mened»erze ukªadu lub dowolnym innym obiekcie klasy ViewGroup.

Mened»ery ukªadów TableLayout <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res android:layout_width="fill_parent" android:layout_height="fill_parent"> <TableRow> <TextView android:layout_width="150px" android:layout_height="100px" android:background="@android:color/darker_gray" <TextView android:layout_width="150px" android:layout_height="100px" android:background="@android:color/white" </TableRow> </TableLayout>

Mened»ery ukªadów RelativeLayout RelativeLayout to najbardziej zaawansowany spo±ród czterech mened»erów ukªadu. Umo»liwia niemal dowolne rozmieszczanie widoków przez uporz dkowanie ich wzgl dem siebie. Mened»er RelativeLayout udost pnia parametry pozwalaj ce elementom podrz dnym wskazywa siebie nawzajem za po±rednictwem identykatorów (notacja z wykorzystaniem @id).

Mened»ery ukªadów RelativeLayout <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:id="@+id/text_view_1" android:layout_width="150px" android:layout_height="100px" android:background="@android:color/darker_gray" <TextView android:id="@+id/text_view_2" android:layout_width="150px" android:layout_height="100px" android:layout_torightof="@id/text_view_1" android:layout_centervertical="true" android:background="@android:color/white" </RelativeLayout>

Scalanie i doª czanie ukªadów Zamiast tak <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/a android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:text="aktywno± z paskiem przycisków" android:layout_width="wrap_content" android:layout_height="wrap_content" <!-- Pasek przycisków --> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content"> <Button android:text="@string/ok" android:layout_width="wrap_content" android:layout_height="wrap_content" <Button android:text="@string/cancel"

Scalanie i doª czanie ukªadów Mo»na tak: stworzy najpierw przeznaczony do wielokrotnego u»ytku komponent paska przycisków zdeniowany w odr bnym pliku ukªadu (button_bar) <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/a android:layout_width="fill_parent" android:layout_height="wrap_content"> <Button android:text="@string/ok" android:layout_width="wrap_content" android:layout_height="wrap_content" <Button android:text="@string/cancel" android:layout_width="wrap_content" android:layout_height="wrap_content" </LinearLayout> a nast pnie doª czy ten fragment lub komponent ukªadu do innego pliku u»ywaj c elementu <include>. <include layout="@layout/button_bar"

Scalanie i doª czanie ukªadów Najlepiej tak <?xml version="1.0" encoding="utf-8"?> <merge xmlns:android="http://schemas.android.com/apk/res/android" <Button android:text="@android:string/ok" android:layout_width="wrap_content" android:layout_height="wrap_content" <Button android:text="@android:string/cancel" android:layout_width="wrap_content" android:layout_height="wrap_content" </merge> Pozwala to doª czy zestaw komponentów do dowolnego ukªadu w zale»no±ci od potrzeb. Nie mamy tutaj, jak poprzednio,»adnego ukªadu (poprzednio LinearLayout), ale za to jedynie ogólny element merge w celu zapewnienie zgodno±ci z XML (bez tego nie otrzymamy poprawnego dokumentu XML).

Style Deniowanie Zamiast tak <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/andro android:text="witaj, widoku tekstowy!" android:textsize="14sp" android:textstyle="bold" android:textcolor="#ccc" android:background="@android:color/transparent" android:padding="5dip" android:layout_width="wrap_content" android:layout_height="wrap_content" co jest dobre gdy mamy tylko jeden przycisk.

Style Deniowanie Mo»na zdeniowa ogólny styl <?xml version="1.0" encoding="utf-8"?> <resources> <style name="mycustomtextview" parent="@android:style/widget.t <item name="android:textsize">14sp</item> <item name="android:textstyle">bold</item> <item name="android:textcolor">#ccc</item> <item name="android:background">@android:color/transparent< <item name="android:padding">5dip</item> </style> </resources>

Style U»ycie a nast pnie go u»y <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/andro android:text="witaj, widoku tekstowy!" android:layout_width="wrap_content" android:layout_height="wrap_content" style="@style/mycustomtextview"

Motywy Š czenie atrybutów widoków w style jest przydatne, ale to tylko poªowa rozwi zania. Nadal trzeba zastosowa style do wszystkich docelowych widoków. Powinno si to odbywa automatycznie. Motywy to style. Jedyna ró»nica mi dzy motywem a stylem polega na tym,»e motywy dotycz aktywno±ci lub caªej aplikacji (czyli wszystkich aktywno±ci z programu), a nie pojedynczych widoków. Ró»nica zwi zana jest wi c z zakresem, a nie ze sposobem dziaªania lub nawet struktur rozwi zania.

Motywy <?xml version="1.0" encoding="utf-8"?> <resources> <style name="myapptheme" parent="@android:style/theme.black"> <item name="android:listviewstyle">@style/mylistviewstyle</ <item name="android:windowbackground">@drawable/film_bg</it </style> <style name=" MyListViewStyle" parent="@android:style/widget.listview"> <item name="android:background">#a000</item> <item name="android:fastscrollenabled">true</item> <item name="android:footerdividersenabled">false</item> </style> </resources> <application android:theme="@style/myapptheme"...>... </application>