Ta strona zawiera opis następujących typów zasobów, które można udostępniać na zewnątrz:
- Wartość logiczna
- Zasób XML zawierający wartość logiczną.
- Kolor
- Zasób XML zawierający wartość koloru (kolor szesnastkowy).
- Wymiar
- Zasób XML, który zawiera wartość wymiaru (z jednostką miary).
- ID
- Zasób XML, który zapewnia unikalny identyfikator zasobów i komponentów aplikacji.
- Liczba całkowita
- Zasób XML, który zawiera liczbę całkowitą.
- Tablica liczb całkowitych
- Zasób XML, który udostępnia tablicę liczb całkowitych.
- Tablica z typem
- Zasób XML, który udostępnia obiekt
TypedArray
(który można wykorzystać na potrzeby tablicy elementów rysowalnych).
Wartość logiczna
Wartość logiczna zdefiniowana w pliku XML.
Uwaga: wartość logiczna to prosty zasób, do którego odwołuje się wartość podana w atrybucie name
, a nie nazwa pliku XML. Możesz więc połączyć zasoby logiczne z innymi prostymi zasobami w jednym pliku XML w ramach 1 elementu <resources>
.
- lokalizacja pliku:
res/values/filename.xml
Nazwa pliku jest dowolna. Jako identyfikator zasobu jest używany elementname
elementu<bool>
.- odniesienie do zasobów:
-
W Javie:
R.bool.bool_name
W pliku XML:@[package:]bool/bool_name
- składnia:
-
<?xml version="1.0" encoding="utf-8"?> <resources> <bool name="bool_name" >[true | false]</bool> </resources>
- elementy:
- przykład:
- Plik XML zapisany o
res/values-small/bools.xml
:<?xml version="1.0" encoding="utf-8"?> <resources> <bool name="screen_small">true</bool> <bool name="adjust_view_bounds">true</bool> </resources>
Wartość logiczną pobiera ten kod aplikacji:
Kotlin
val screenIsSmall: Boolean =
resources
.getBoolean
(R.bool.screen_small)Java
Resources res =
getResources()
; boolean screenIsSmall = res.getBoolean
(R.bool.screen_small);Ten kod XML układu korzysta z wartości logicznej atrybutu:
<ImageView android:layout_height="fill_parent" android:layout_width="fill_parent" android:src="@drawable/logo" android:adjustViewBounds="@bool/adjust_view_bounds" />
Kolor
Wartość koloru zdefiniowana w pliku XML.
Kolor jest określany za pomocą wartości RGB i kanału alfa. Zasóbu koloru możesz użyć w dowolnym miejscu,
które akceptuje szesnastkową wartość koloru. Zasóbu koloru możesz też użyć, jeśli w pliku XML oczekujesz rysowalnego zasobu, np. android:drawable="@color/green"
.
Wartość zawsze zaczyna się od znaku funta (#), po którym znajduje się informacja Alfa-Czerwony-Zielony-Niebieski:
- #RGB
- #ARGB
- #RRGGBB
- #AARRGGBB
Uwaga: kolor to prosty zasób, do którego odwołuje się wartość podana w atrybucie name
, a nie nazwa pliku XML. Dzięki temu możesz połączyć zasoby kolorów z innymi prostymi zasobami w jednym pliku XML w ramach 1 elementu <resources>
.
- lokalizacja pliku:
res/values/colors.xml
Nazwa pliku jest dowolna. Jako identyfikator zasobu używany jest elementname
elementu<color>
.- odniesienie do zasobów:
-
W Javie:
R.color.color_name
W pliku XML:@[package:]color/color_name
- składnia:
-
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="color_name" >hex_color</color> </resources>
- elementy:
- przykład:
- Plik XML zapisany o
res/values/colors.xml
:<?xml version="1.0" encoding="utf-8"?> <resources> <color name="opaque_red">#f00</color> <color name="translucent_red">#80ff0000</color> </resources>
Ten kod aplikacji pobiera zasób koloru:
Kotlin
val color: Int =
resources
.getColor
(R.color.opaque_red)Java
Resources res =
getResources()
; int color = res.getColor
(R.color.opaque_red);Poniższy kod XML układu dotyczy atrybutu kolor:
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="@color/translucent_red" android:text="Hello"/>
Wymiar
Wartość wymiaru zdefiniowana w pliku XML. Wymiar jest określany przez liczbę, po której następuje jednostka miary, np. 10 pikseli, 2 in lub 5 sp. Android obsługuje te jednostki miary:
dp
- Piksele niezależne od gęstości: abstrakcyjna jednostka oparta na fizycznej gęstości ekranu. Jednostki te są przedstawiane względem ekranu o rozdzielczości 160 dpi (kropek na cal), gdzie 1 dp to mniej więcej 1 piksel. W przypadku aplikacji na ekranie o większej gęstości liczba pikseli używanych do rysowania o wartości 1 dp jest skalowana w górę według współczynnika odpowiedniego dla rozdzielczości ekranu.
Podobnie na ekranie o mniejszej gęstości liczba pikseli stosowana w przypadku wartości 1 dp jest pomniejszana. Stosunek dps do pikseli zmienia się wraz z gęstością ekranu, ale niekoniecznie bezpośrednio. Użycie jednostek dp zamiast jednostek w pikselach to rozwiązanie, dzięki któremu wymiary widoku w układzie witryny są odpowiednio zmieniane w zależności od gęstości ekranu. Zapewnia spójność rzeczywistych rozmiarów elementów interfejsu na różnych urządzeniach.
sp
- Piksele niezależne od skali – to odpowiednik jednostki dp, ale jest również skalowany zgodnie z rozmiarem czcionki wybranym przez użytkownika. Zalecamy używanie tej jednostki do określania rozmiarów czcionek, ponieważ będą one dostosowywane zarówno do gęstości ekranu, jak i preferencji użytkownika.
pt
- Punkty: 1/72 cala w zależności od fizycznego rozmiaru ekranu przy założeniu ekranu o gęstości 72 dpi.
px
- Piksele: odpowiada liczbie pikseli widocznych na ekranie. Nie zalecamy korzystania z tej jednostki, ponieważ rzeczywista reprezentacja może różnić się w zależności od urządzenia. Różne urządzenia mogą mieć różną liczbę pikseli na cal, a łączna liczba pikseli na ekranie może być większa lub mniejsza.
mm
- Mimetry: w zależności od fizycznego rozmiaru ekranu.
in
- Cale: w zależności od fizycznego rozmiaru ekranu.
Uwaga: wymiar to prosty zasób, do którego odwołuje się wartość podana w atrybucie name
, a nie nazwa pliku XML. Możesz więc łączyć zasoby wymiarów z innymi prostymi zasobami w jednym pliku XML w ramach 1 elementu <resources>
.
- lokalizacja pliku:
res/values/filename.xml
Nazwa pliku jest dowolna. Jako identyfikator zasobu używany jest elementname
elementu<dimen>
.- odniesienie do zasobów:
-
W Javie:
R.dimen.dimension_name
W pliku XML:@[package:]dimen/dimension_name
- składnia:
-
<?xml version="1.0" encoding="utf-8"?> <resources> <dimen name="dimension_name" >dimension</dimen> </resources>
- elementy:
- przykład:
- Plik XML zapisany o
res/values/dimens.xml
:<?xml version="1.0" encoding="utf-8"?> <resources> <dimen name="textview_height">25dp</dimen> <dimen name="textview_width">150dp</dimen> <dimen name="ball_radius">30dp</dimen> <dimen name="font_size">16sp</dimen> </resources>
Ten kod aplikacji pobiera wymiar:
Kotlin
val fontSize: Float =
resources
.getDimension
(R.dimen.font_size)Java
Resources res =
getResources()
; float fontSize = res.getDimension
(R.dimen.font_size);Ten kod XML układu stosuje wymiary do atrybutów:
<TextView android:layout_height="@dimen/textview_height" android:layout_width="@dimen/textview_width" android:textSize="@dimen/font_size"/>
ID
Unikalny identyfikator zasobu zdefiniowany w pliku XML. Narzędzia dla programistów na Androida wykorzystują nazwę podaną w elemencie <item>
, aby utworzyć unikalną liczbę całkowitą w klasie R.java
projektu, której możesz użyć jako identyfikatora zasobów aplikacji, np. View
w układzie interfejsu użytkownika, lub unikalnej liczby całkowitej do użycia w kodzie aplikacji, np. identyfikatora okna lub kodu wyniku.
Uwaga: identyfikator to prosty zasób, do którego odwołuje się wartość podana w atrybucie name
, a nie nazwa pliku XML. Dzięki temu możesz łączyć zasoby identyfikatorów z innymi prostymi zasobami w jednym pliku XML w ramach 1 elementu <resources>
. Co więcej, zasób identyfikatora nie odwołuje się do rzeczywistego elementu zasobu: jest to unikalny identyfikator, który możesz dołączyć do innych zasobów lub użyć jako unikalnej liczby całkowitej w aplikacji.
- lokalizacja pliku:
res/values/filename.xml
Nazwa pliku jest dowolna.- odniesienie do zasobów:
-
W Javie:
R.id.name
W pliku XML:@[package:]id/name
- składnia:
-
<?xml version="1.0" encoding="utf-8"?> <resources> <item type="id" name="id_name" /> </resources>
- elementy:
- przykład:
-
Plik XML zapisany
res/values/ids.xml
:<?xml version="1.0" encoding="utf-8"?> <resources> <item type="id" name="button_ok" /> <item type="id" name="dialog_exit" /> </resources>
Ten fragment kodu układu korzysta z identyfikatora
"button_ok"
widżetuButton
:<Button android:id="@id/button_ok" style="@style/button_style" />
Wartość
android:id
w tym miejscu nie zawiera znaku plusa w odwołaniu do identyfikatora, bo identyfikator już istnieje, jak określono w poprzednim przykładzieids.xml
. Gdy określisz identyfikator dla zasobu XML za pomocą znaku plusa w formacieandroid:id="@+id/name"
, będzie to oznaczać, że identyfikator"name"
jeszcze nie istnieje i zostanie utworzony.W tym przykładzie ten fragment kodu zawiera identyfikator
"dialog_exit"
jako unikalny identyfikator okna:Kotlin
showDialog
(R.id.dialog_exit)Java
showDialog
(R.id.dialog_exit);W tej samej aplikacji identyfikator
"dialog_exit"
jest porównywany podczas tworzenia okna:Kotlin
override fun
onCreateDialog
(id: Int): Dialog? { return when(id) { R.id.dialog_exit -> { ... } else -> { null } } }Java
protected Dialog
onCreateDialog
(int id) { Dialog dialog; switch(id) { case R.id.dialog_exit: ... break; default: dialog = null; } return dialog; }
Liczba całkowita
Liczba całkowita zdefiniowana w pliku XML.
Uwaga: liczba całkowita to prosty zasób, do którego odwołuje się wartość podana w atrybucie name
, a nie nazwa pliku XML. Możesz połączyć zasoby całkowite z innymi prostymi zasobami w jednym pliku XML w ramach 1 elementu <resources>
.
- lokalizacja pliku:
res/values/filename.xml
Nazwa pliku jest dowolna. Jako identyfikator zasobu używany jest elementname
elementu<integer>
.- odniesienie do zasobów:
-
W Javie:
R.integer.integer_name
W pliku XML:@[package:]integer/integer_name
- składnia:
-
<?xml version="1.0" encoding="utf-8"?> <resources> <integer name="integer_name" >integer</integer> </resources>
- elementy:
- przykład:
-
Plik XML zapisany
res/values/integers.xml
:<?xml version="1.0" encoding="utf-8"?> <resources> <integer name="max_speed">75</integer> <integer name="min_speed">5</integer> </resources>
Ten kod aplikacji pobiera liczbę całkowitą:
Kotlin
val maxSpeed: Int =
resources
.getInteger
(R.integer.max_speed)Java
Resources res =
getResources()
; int maxSpeed = res.getInteger
(R.integer.max_speed);
Tablica liczb całkowitych
Tablica liczb całkowitych zdefiniowana w pliku XML.
Uwaga: tablica całkowita to prosty zasób, do którego odwołuje się wartość podana w atrybucie name
, a nie nazwa pliku XML. Możesz połączyć zasoby tablicy całkowitej z innymi prostymi zasobami w jednym pliku XML w ramach 1 elementu <resources>
.
- lokalizacja pliku:
res/values/filename.xml
Nazwa pliku jest dowolna. Jako identyfikator zasobu używany jest elementname
elementu<integer-array>
.- typ danych skompilowanych zasobów:
- Wskaźnik zasobu tablicy liczb całkowitych.
- odniesienie do zasobów:
-
W Javie:
R.array.integer_array_name
W pliku XML:@[package:]array/integer_array_name
- składnia:
-
<?xml version="1.0" encoding="utf-8"?> <resources> <integer-array name="integer_array_name"> <item >integer</item> </integer-array> </resources>
- elementy:
- przykład:
- Plik XML zapisany o
res/values/integers.xml
:<?xml version="1.0" encoding="utf-8"?> <resources> <integer-array name="bits"> <item>4</item> <item>8</item> <item>16</item> <item>32</item> </integer-array> </resources>
Ten kod aplikacji pobiera tablicę liczb całkowitych:
Kotlin
val bits: IntArray =
resources
.getIntArray
(R.array.bits)Java
Resources res =
getResources()
; int[] bits = res.getIntArray
(R.array.bits);
Tablica z typem
TypedArray
zdefiniowany w pliku XML. Dzięki temu możesz utworzyć tablicę innych zasobów, np. obiekty rysowalne. Tablica nie musi być jednorodna, więc można utworzyć tablicę mieszanych typów zasobów, ale warto wiedzieć, jakie typy danych się w niej znajdują i gdzie się one znajdują, aby można było prawidłowo uzyskać każdy element za pomocą metod get...()
klasy TypedArray
.
Uwaga: tablica z typem to prosty zasób, do którego odwołuje się wartość podana w atrybucie name
, a nie nazwa pliku XML. Dzięki temu możesz łączyć zasoby tablicy o typie z innymi prostymi zasobami w jednym pliku XML w ramach 1 elementu <resources>
.
- lokalizacja pliku:
res/values/filename.xml
Nazwa pliku jest dowolna. Jako identyfikator zasobu używany jest elementname
elementu<array>
.- typ danych skompilowanych zasobów:
- Wskaźnik zasobu do
TypedArray
. - odniesienie do zasobów:
-
W Javie:
R.array.array_name
W pliku XML:@[package:]array/array_name
- składnia:
-
<?xml version="1.0" encoding="utf-8"?> <resources> <array name="integer_array_name"> <item>resource</item> </array> </resources>
- elementy:
- przykład:
- Plik XML zapisany o
res/values/arrays.xml
:<?xml version="1.0" encoding="utf-8"?> <resources> <array name="icons"> <item>@drawable/home</item> <item>@drawable/settings</item> <item>@drawable/logout</item> </array> <array name="colors"> <item>#FFFF0000</item> <item>#FF00FF00</item> <item>#FF0000FF</item> </array> </resources>
Ten kod aplikacji pobiera każdą tablicę, a następnie pierwszy wpis w każdej tablicy:
Kotlin
val icons: TypedArray =
resources
.obtainTypedArray
(R.array.icons) val drawable: Drawable = icons.getDrawable
(0) val colors: TypedArray =resources
.obtainTypedArray
(R.array.colors) val color: Int = colors.getColor
(0,0)Java
Resources res =
getResources()
; TypedArray icons = res.obtainTypedArray
(R.array.icons); Drawable drawable = icons.getDrawable
(0); TypedArray colors = res.obtainTypedArray
(R.array.colors); int color = colors.getColor
(0,0);