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&qu<ot;?>
resources
    bool
        na>me="bool_<name&qu<ot;
        [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&qu<ot;?>
resources
    bool n<ame="s<creen_small">true/bool>
<    boo<l 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&quo<t;?&gt;
resources>;
    color
        >name=&quo<t;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&qu<ot;?>
resources>
   co<lor name=&q<uot;opaque_red">#f00/color><
   colo<r 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&quo<t;?&gt;
resources>;
    dimen
        name>="di<mensio>n<_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&quo<t;?>
resources>
    dimen n<ame="te<xtview_height">25dp/dimen<>
    dim<en name="textview_width&<quot;>150<dp/dimen>
    dimen name<="b<all_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&qu<ot;?>
resources
    item
        type=&quot;>i<d"
  >      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&quo<t;?>
resources>
    item ty>pe=&q<uot;id" name="button_ok&q>u<ot; /
    item type="id" name="dialog_exit" /
/resources>

Ten fragment kodu układu używa identyfikatora "button_ok" widżetu Button:

<Button android:id=&quot;@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&quo<t;?>
resources>
    integer
        na>me=&quo<t;intege>r<_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&quo<t;?>
resources>
    i<nteger name=&q<uot;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&quo<t;?>
resources>
    integer-array
        name=&quo<t;integer_array_n>ame&quo<t;>>;
   <     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&quo<t;?>
resources>
    integer-a<rray n<ame="bits&<quot;&<gt;
        ite<m>4/<item>
      <  item&<gt;8/item&g<t;
        item&<gt;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&quo<t;?&gt;
resources>;
    array
        name=&quo<t;in>teger_ar<ray_n>ame&q<uot;><
        itemresource/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&quo<t;?>
resources>
    ar<ray name="icon<s">
   <     item>@drawable/<home/item>
 <       item>@drawa<ble/setting<s/item>
 <       item>@drawable/logo<ut/item>
  <  /array>
  <  array name=&<quot;colors&quo<t;>
       < item>#F<FFF0000/<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);