Więcej typów zasobów

Na tej stronie znajdują się następujące typy zasobów, które można udostępnić na zewnątrz:

Wartość logiczna
Zasób XML z wartością logiczną.
Kolor
Zasób XML z wartością koloru (kolorem szesnastkowym).
Wymiar
Zasób XML, który zawiera wartość wymiaru (z jednostką miary).
ID
Zasób XML, który zapewnia unikalny identyfikator zasobów aplikacji oraz
Liczba całkowita
Zasób XML z wartością całkowitą.
Tablica całkowita
Zasób XML zawierający tablicę liczb całkowitych.
Tablica z typem
Zasób XML udostępniający plik TypedArray (który możesz użyć dla tablicy elementów, które można narysować.

Wartość logiczna

Wartość logiczna zdefiniowana w pliku XML.

Uwaga: wartość logiczna to prosty zasób, do którego się odwołuje się używając wartości podanej w atrybucie name, a nie nazwy pliku XML. Jako więc możesz połączyć zasoby logiczne z innymi prostymi zasobami w jednym pliku XML, w ramach jednego elementu <resources>.

lokalizacja pliku:

res/values/filename.xml(
) Nazwa pliku jest dowolna. Jako zasób elementu <bool> używany jest atrybut name ID.
odniesienie do zasobu:
W języku Java: 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:
<resources>
Wymagane. To jest węzeł główny.

Brak atrybutów.

<bool>
Wartość logiczna: true lub false.

Atrybuty:

name
Ciąg znaków. Nazwa wartości logicznej. Jest on używany jako identyfikator zasobu.
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>

Ten kod aplikacji pobiera wartość logiczną:

Kotlin

val screenIsSmall: Boolean = resources.getBoolean(R.bool.screen_small)

Java

Resources res = getResources();
boolean screenIsSmall = res.getBoolean(R.bool.screen_small);

W poniższym kodzie XML szablonu użyto wartości logicznej dla 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 przy użyciu wartości RGB i kanału alfa. Możesz użyć zasobu koloru, w dowolnym miejscu, w którym można podać szesnastkową wartość koloru. Możesz też użyć zasobu koloru, gdy W pliku XML oczekiwany jest zasób rysowalny, np. android:drawable="@color/green".

Wartość zawsze zaczyna się od znaku krzyżyka (#), po którym następuje znak Informacje w kolorach alfa-czerwonym, zielonym i niebieskim w jednym z tych formatów:

  • #RGB
  • #ARGB
  • #RRGGBB
  • Numer AARRGGBB

Uwaga: kolor to prosty zasób, do którego się odwołuje. używając wartości podanej w atrybucie name, a nie nazwy pliku XML. Jako więc możesz połączyć zasoby kolorów z innymi prostymi zasobami w jednym pliku XML, w ramach jednego elementu <resources>.

lokalizacja pliku:

res/values/colors.xml(
) Nazwa pliku jest dowolna. Atrybut name elementu <color> jest używany jako identyfikatora zasobu.
odniesienie do zasobu:
W języku Java: 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:
<resources>
Wymagane. To jest węzeł główny.

Brak atrybutów.

<color>
Kolor wyrażony w formacie szesnastkowym.

Atrybuty:

name
Ciąg znaków. Nazwa koloru. Jest on używany jako identyfikator zasobu.
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 stosuje kolor do atrybutu:

<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ślony liczbą, po której następuje jednostka miary, np. 10 pikseli, 2 cale lub 5 sp. Android obsługuje następujące jednostki miary:

dp
Piksele niezależne od gęstości: abstrakcyjna jednostka oparta na gęstości fizycznej ekranu. Jednostki te są podawane w odniesieniu do ekranu o rozdzielczości 160 dpi (punktów na cal), gdzie 1 dp jest równy mniej więcej taki sam. do 1 piksela. Podczas wyświetlania reklamy na ekranie o większej gęstości liczba pikseli używanych do rysowania o 1 dp jest skalowana w górę. przez współczynnik odpowiedni do rozdzielczości ekranu.

Na ekranie o mniejszej gęstości dane pikseli używanych na 1 dp zostanie pomniejszony. Stosunek dps do pikseli zmienia się wraz z gęstością ekranu, ale niekoniecznie w bezpośrednich proporcjach. Rozwiązaniem jest użycie jednostek dp zamiast jednostek px. , by dostosować rozmiar widoku do różnych gęstości ekranu. Zapewnia spójność rzeczywistych rozmiarów elementów interfejsu w różnych urządzenia.

sp
Piksele niezależne od skali – przypominają jednostkę dp, ale są skalowane według czcionki użytkownika. ustawienia rozmiaru. Przy określaniu rozmiarów czcionek zalecamy korzystanie z tej jednostki, ponieważ zostaną one dopasowane ze względu na gęstość ekranu i preferencje użytkownika.
pt
Punkty: 1/72 cala w zależności od fizycznego rozmiaru ekranu, Zakładając, że ekran ma gęstość 72 dpi.
px
Piksele: odpowiadają rzeczywistym pikselom na ekranie. Nie zalecamy korzystania z tej jednostki, ponieważ rzeczywista reprezentacja może się różnić w zależności od urządzenia. Różne urządzenia mogą mieć różną liczbę pikseli na cal, przy czym łączna liczba pikseli widocznych na ekranie może być większa lub mniejsza.
mm
Milimetry: w zależności od fizycznego rozmiaru ekranu.
in
Cale: na podstawie fizycznego rozmiaru ekranu.

Uwaga: wymiar to prosty zasób, do którego się odwołuje. używając wartości podanej w atrybucie name, a nie nazwy pliku XML. Jako więc możesz połączyć zasoby wymiarów z innymi prostymi zasobami w jednym pliku XML, w ramach jednego elementu <resources>.

lokalizacja pliku:

res/values/filename.xml(
) Nazwa pliku jest dowolna. Atrybut name elementu <dimen> jest używany jako identyfikatora zasobu.
odniesienie do zasobu:
W języku Java: 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:
<resources>
Wymagane. To jest węzeł główny.

Brak atrybutów.

<dimen>
Wymiar reprezentowany przez liczbę zmiennoprzecinkową, po której następuje jednostka miary (dp, sp, pt, px, mm, in).

Atrybuty:

name
Ciąg znaków. Nazwa wymiaru. Jest on używany jako identyfikator zasobu.
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 układ 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 kodzie XML. używając imienia i nazwiska podanego w dokumencie <item>. narzędzia dla programistów aplikacji na Androida utworzą w klasie R.java Twojego projektu unikalną liczbę całkowitą, której możesz użyć jako identyfikator zasobów aplikacji, takich jak View w układzie interfejsu użytkownika, lub unikalna liczba całkowita do użytku w kodzie aplikacji, np. identyfikator okna kodu wyniku.

Uwaga: identyfikator to prosty zasób, do którego się odwołuje. używając wartości podanej w atrybucie name, a nie nazwy pliku XML. Jako więc możesz połączyć zasoby identyfikatorów z innymi prostymi zasobami w jednym pliku XML, w ramach jednego elementu <resources>. Zasób identyfikatora nie odnosi się też do rzeczywisty element zasobu: unikalny identyfikator, który można dołączyć do innych zasobów lub użyć jako unikalną liczbę całkowitą w aplikacji.

lokalizacja pliku:

res/values/filename.xml(
) Nazwa pliku jest dowolna.
odniesienie do zasobu:
W języku Java: 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:
<resources>
Wymagane. To jest węzeł główny.

Brak atrybutów.

<item>
Określa unikalny identyfikator. Nie przyjmuje żadnej wartości, lecz tylko atrybuty.

Atrybuty:

type
Musi mieć wartość "id".
name
Ciąg znaków. Unikalna nazwa identyfikatora.
przykład:

Plik XML zapisany w lokalizacji 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 używa identyfikatora "button_ok" widżetu Button:

<Button android:id="@id/button_ok"
    style="@style/button_style" />

Wartość android:id nie zawiera znaku plusa w identyfikatorze, bo identyfikator już istnieje, jak określono w poprzednim przykładzie ids.xml. Jeśli podasz Identyfikator zasobu XML za pomocą znaku plusa w formacie android:id="@+id/name", co oznacza, że identyfikator "name" jeszcze nie istnieje, ale został utworzony.

Inny przykład: ten fragment kodu wykorzystuje identyfikator "dialog_exit" jako unikalny identyfikator: dla okna dialogowego:

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 się odwołuje używając wartości podanej w atrybucie name, a nie nazwy pliku XML. Jako więc możesz połączyć zasoby w postaci liczb całkowitych z innymi prostymi zasobami w jednym pliku XML, w ramach jednego elementu <resources>.

lokalizacja pliku:

res/values/filename.xml(
) Nazwa pliku jest dowolna. Atrybut name elementu <integer> jest używany jako identyfikatora zasobu.
odniesienie do zasobu:
W języku Java: 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:
<resources>
Wymagane. To jest węzeł główny.

Brak atrybutów.

<integer>
Liczba całkowita.

Atrybuty:

name
Ciąg znaków. Nazwa liczby całkowitej. Jest on używany jako identyfikator zasobu.
przykład:

Plik XML zapisany w lokalizacji 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 całkowita

Tablica liczb całkowitych zdefiniowana w pliku XML.

Uwaga: tablica z liczbami całkowitymi to prosty zasób, do którego odwołuje się używając wartości podanej w atrybucie name, a nie nazwy pliku XML. Jako więc możesz połączyć zasoby tablicy z liczbami całkowitymi z innymi prostymi zasobami w jednym pliku XML w ramach jednego elementu <resources>.

lokalizacja pliku:

res/values/filename.xml(
) Nazwa pliku jest dowolna. Atrybut name elementu <integer-array> jest używany jako identyfikatora zasobu.
skompilowany typ danych zasobu:
Wskaźnik zasobu do tablicy liczb całkowitych.
odniesienie do zasobu:
W języku Java: 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:
<resources>
Wymagane. To jest węzeł główny.

Brak atrybutów.

<integer-array>
Definiuje tablicę liczb całkowitych. Zawiera co najmniej 1 element podrzędny <item>.

Atrybuty:

android:name
Ciąg znaków. Nazwa tablicy. Ta nazwa jest używana jako zasób Identyfikator odwołania do tablicy.
<item>
Liczba całkowita. Wartość może być odwołaniem do innego Liczba całkowita. Musi być elementem podrzędnym elementu <integer-array>.

Brak atrybutów.

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ę całkowitą:

Kotlin

val bits: IntArray = resources.getIntArray(R.array.bits)

Java

Resources res = getResources();
int[] bits = res.getIntArray(R.array.bits);

Tablica z typem

Pole TypedArray zdefiniowane w pliku XML. Za pomocą w celu utworzenia tablicy innych zasobów, na przykład obiektów rysowania. Tablica nie musi być jednorodna, więc możesz utworzyć tablicę mieszanych typów zasobów, ale wiedzieć, jakie typy danych znajdują się w tablicy i gdzie się znajdują, aby prawidłowo uzyskać każdy element z metodami get...() klasy TypedArray.

Uwaga: tablica o określonym typie jest prostym zasobem, do którego się odwołuje używając wartości podanej w atrybucie name, a nie nazwy pliku XML. Jako więc możesz połączyć zasoby tablicy o określonym typie z innymi prostymi zasobami w jednym pliku XML, w ramach jednego elementu <resources>.

lokalizacja pliku:

res/values/filename.xml(
) Nazwa pliku jest dowolna. Atrybut name elementu <array> jest używany jako identyfikatora zasobu.
skompilowany typ danych zasobu:
Wskaźnik zasobu do elementu TypedArray.
odniesienie do zasobu:
W języku Java: 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:
<resources>
Wymagane. To jest węzeł główny.

Brak atrybutów.

<array>
Definiuje tablicę. Zawiera co najmniej 1 element podrzędny <item>.

Atrybuty:

android:name
Ciąg znaków. Nazwa tablicy. Ta nazwa jest używana jako zasób Identyfikator odwołania do tablicy.
<item>
Materiały ogólne. Wartość może być odwołaniem do zasobu lub prostym typem danych. Musi być elementem podrzędnym elementu <array>.

Brak atrybutów.

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>

Następujący kod aplikacji pobiera każdą tablicę, a następnie uzyskuje pierwszy wpis w każdej z nich:

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);