Android od podstaw: rozumienie widoków i grup widoków
Polish (Polski) translation by Mateusz Kurlit (you can also view the original English article)
Oprócz nielicznych skrajnych przypadków, każda aplikacja, którą budujesz, posiada pewną formę interfejsu użytkownika. W Androidzie, możemy to osiągnąć za pomocą obiektów View
i ViewGroup
. W tym artykule, poznasz niektóre powszechnie spotykane komponenty View
przeznaczone do wyświetlania treści i dowiesz się jak z nich korzystać.
1. Widoki
Obiekty View
są szczególnie wykorzystywane do rysowania zawartości na ekranie urządzenia z systemem Android. Chociaż możesz wdrożyć View
w swoim kodzie Java, najłatwiejszym sposobem jest użycie pliku XML układu. Przykład tego możemy zobaczyć podczas tworzenia prostej aplikacji "Hello World" w Android Studio. Plik układu nazywa się activity_main.xml i wygląda mniej więcej tak:
1 |
<TextView
|
2 |
android:id="@+id/hello_world" |
3 |
android:layout_width="wrap_content" |
4 |
android:layout_height="wrap_content" |
5 |
android:text="Hello World!" /> |
Powyższy przykład przedstawia typ View
, który może być wyświetlony na ekranie. Atrybuty layout_width
i layout_height
oznaczają, że View
powinien zajmować tyle miejsca ile potrzeba do wyświetlenia tekstu "Hello World!". Atrybut id
oznacza jak ten View
może być widoczny w twoim kodzie Java w ten sposób:
1 |
setContentView(R.layout.activity_main); |
2 |
TextView textView = (TextView) findViewById(R.id.hello_world); |
Ponieważ możesz ustawić atrybuty dla View
w XML, możesz również zmienić atrybuty w swoim kodzie Java takie jak zmiana tekstu powyższego TextView
.
1 |
textView.setText("This is a changed View"); |
Powyższy kod aktualizuje tekst TextView
do "This is a changed View". Tak to wygląda po uruchomieniu aplikacji.



Teraz, gdy wiesz jak pracować z podstawowymi obiektami View
, przejdźmy do innych typów dostępnych w Android SDK.
Widoki wyświetlania
TextView
To jest View
, który wykorzystaliśmy w powyższym przykładzie. Głównym zadaniem TextView
jest wyświetlanie tekstu na ekranie aplikacji. Choć wygląda to na proste zadanie, klasa TextView
zawiera skomplikowaną logikę pozwalającą na wyświetlanie oznaczonego tekstu, hiperłączy, numerów telefonów, adresów email i innych przydatnych rzeczy.
ImageView
Jak sama nazwa wskazuje, ImageView
został zaprojektowany specjalnie do wyświetlania obrazów na ekranie. Może być użyty do wyświetlania zasobów przechowywanych w aplikacji lub obrazów pobieranych z internetu.
Wejścia i kontrolki
Niektóre obiekty View
są wykorzystywane do czegoś więcej niż tylko do wyświetlania treści użytkownikom. Czasami trzeba otrzymać pewnego rodzaju wejście, aby sterować aplikacją. Na szczęście Android zapewnia kilka podklas View
przeznaczonych do tego celu.
Button
Klasa Button
jest jedną z najbardziej podstawowych kontrolek dostępnych w aplikacji. Nasłuchuje klików użytkownika i wzywa metodę w kodzie, aby odpowiednio zareagować.
Switch
i CheckBox
Klasy Switch
i CheckBox
posiadają stan aktywny i nieaktywny, między którymi można przełączać. Przydatne podczas zmiany ustawień w aplikacji. Wersje zgodne z Material Design są dostępne w bibliotece wsparcia AppCompat.
EditText
Podklasa View
jest rozszerzeniem klasy TextView
i pozwala użytkownikom na edytowanie zawartego tekstu za pomocą klawiatury.
Widoki bazujące na adapterze
Każdy z powyższych przykładów View
jest pojedynczym elementem, ale czasami trzeba wyświetlić zbiór elementów. Te klasy View
wymagają użycia Adapter
, który radzi sobie z wyświetlaniem odpowiedniego interfejsu użytkownika dla elementu w zbiorze.
ListView
Klasa ListView
jest wykorzystywana do wyświetlania zbioru elementów w liniowym, jednokolumnowym i przewijalnym View
. Każdy element może być wybrany w celu wyświetlenia większej liczby szczegółów lub przeprowadzenia czynności związanej z tym elementem.
GridView
Podobna klasy ListView
, klasa GridView
pobiera Adapter
i wyświetla elementy w wielu kolumnach na ekranie.
Spinner
Ostatni zbiór klasy View
, który poznasz w tym poradniku to klasa Spinner
. Akceptuje Adapter
i wyświetla elementy w rozwijanym menu po kliknięciu Spinner
, aby element mógł zostać wybrany przez użytkownika.
2. Grupy widoku
ViewGroup
jest widocznym obiektem wykorzystywanym do przechowywania innych obiektów View
i ViewGroup
w celu organizacji i sterowania układem ekranu. Obiekty ViewGroup
są używane do tworzenia hierarchii obiektów View
(zobacz poniżej) umożliwiającą tworzenie bardziej złożonych układów. Biorąc to pod uwagę, im układ jest prostszy, tym bardziej wydajny.



Obiekty ViewGroup
mogą być wywołane w ten sam sposób co standardowe elementy View
w XML lub w kodzie Java.
1 |
<?xml version="1.0" encoding="utf-8"?>
|
2 |
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" |
3 |
android:layout_width="match_parent" |
4 |
android:layout_height="match_parent" |
5 |
android:orientation="vertical"> |
6 |
<TextView
|
7 |
android:id="@+id/hello_world" |
8 |
android:layout_width="wrap_content" |
9 |
android:layout_height="wrap_content" |
10 |
android:text="Hello World!" /> |
11 |
<TextView
|
12 |
android:id="@+id/hello_world_2" |
13 |
android:layout_width="wrap_content" |
14 |
android:layout_height="wrap_content" |
15 |
android:text="Hello World 2!" /> |
16 |
</LinearLayout>
|
Ponieważ wszystkie klasy ViewGroup
przeprowadzają podobne zadanie, każda podklasa ViewGroup
istnieje dla konkretnego zadania. Rzućmy okiem na niektóre z nich.
LinearLayout
LinearLayout
wyświetla elementy w ułożone w kolejności poziomej lub pionowej. Liniowe układ mogą być również użyte do przypisania wag podrzędnym elementom View
tak, aby były one rozmieszczone na ekranie w odpowiednim stosunku do siebie.
RelativeLayout
Ta podklasa ViewGroup
pozwala na wyświetlanie elementów na ekranie w odniesieniu do siebie, umożliwiając większą elastyczność i swobodę dotyczącą wyświetlania układu w porównaniu do LinearLayout
.
FrameLayout
Podklasa zaprojektowana do wyświetlania pojedynczego podrzędnego elementu View
, FrameLayout
rysuje elementy w stosie i pozwala w prosty sposób wyświetlać element na ekranach o różnych rozmiarach.
ScrollView
Rozszerzenie FrameLayout
, klasa ScrollView
zajmuje się przewijaniem podrzędnych obiektów na ekranie.
ViewPager
Podklasa używana do zarządzania wieloma widokami wyświetlając tylko jeden w danym momencie, klasa ViewPager
akceptuje Adapter
i pozwala użytkownikom przesuwać palcem w lewo i prawo, aby zobaczyć wszystkie dostępne elementy View
.
RecyclerView
Klasa RecyclerView
jest podklasą ViewGroup
, która jest związana z klasami ListView
i GridView
oraz została udostępniona przez Google za pomocą biblioteki wsparcia RecyclerView dla starszych wersji systemu Android. Klasa RecyclerView
wymaga zastosowania szablonu pojemnika widoku, który skutecznie utylizuje elementy i obsługuje LayoutManager
, dekoratora i animatora elementów, który sprawia, że komponent jest niesamowicie elastyczny kosztem jego prostoty.
CoordinatorLayout
Ostatnio dodany do biblioteki wsparcia projektu, klasa CoordinatorLayout
korzysta z obiektu Behavior
, aby określać jak elementy podrzędne View
powinny być rozmieszczone i przesuwane, gdy użytkownik wchodzi w interakcję z aplikacją.
3. Niestandardowe widoki
Chociaż istnieje wiele różnych klas View
i ViewGroup
do wykorzystania w twoich aplikacjach, czasami trzeba stworzyć coś nowego do własnych potrzeb. W tym przypadku, możesz stworzyć nową klasę Java, która rozszerza View
lub ViewGroup
w zależności od tego czego potrzebujesz. Tworzenie nowej niestandardowej podklasy View
wychodzi poza zakres tego artykułu, ale możesz znaleźć więcej informacji w tym poradniku Envato Tuts+.
Wnioski
W tym poradniku poznałeś kilka najbardziej podstawowych komponentów systemu Android, układy i widoki. Mając na uwadze jak fundamentalnymi komponentami są dla systemu Android, będziesz nieustannie uczył się o nich nowych rzeczy w miarę postępu w pracy z platformą Android i z ich pomocą odkrywał nowe sposoby na tworzenie niesamowitych rzeczy w swoich projektach.