Diğer kaynak türleri

Bu sayfada, harici hale getirebileceğiniz aşağıdaki kaynak türleri tanımlanmaktadır:

Bool
Boole değeri taşıyan XML kaynağı.
Renk
Renk değeri (onaltılık renk) içeren XML kaynağı.
Boyut
Bir boyut değeri (ölçü birimiyle) taşıyan XML kaynağı.
ID
Uygulama kaynakları ve uygulamalar için benzersiz bir tanımlayıcı sağlayan XML kaynağı bileşenlerine ayıralım.
Tam sayı
Tam sayı değeri taşıyan XML kaynağı.
Tam sayı dizisi
Tam sayı dizisi sağlayan XML kaynağı.
Türetilen dizi
TypedArray sağlayan XML kaynağı kullanılabilir.

Bool Dili

XML'de tanımlanan boole değeri.

Not: Bool, referans verilen basit bir kaynaktır XML dosyasının adını değil, name özelliğinde sağlanan değer kullanılır. Farklı Örneğin, Boole kaynaklarını diğer basit kaynaklarla tek bir XML dosyasında birleştirebilirsiniz. bir <resources> öğesinin altında.

dosya konumu:
res/values/filename.xml

Dosya adı rastgele seçilmiştir. <bool> öğesinin name değeri kaynak olarak kullanılıyor Kimlik.
kaynak referansı:
. Java'da: R.bool.bool_name
XML'de: @[package:]bool/bool_name
söz dizimi:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool
        name="bool_name"
        >[true | false]</bool>
</resources>
öğeler:
<resources>
Zorunlu. Bu, kök düğümdür.

Özellik yok.

<bool>
Boole değeri: true veya false.

Özellikler:

name
Dize. Bool değerinin adı. Bu, kaynak kimliği olarak kullanılır.
örnek:
XML dosyası res/values-small/bools.xml itibarıyla kaydedildi:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool name="screen_small">true</bool>
    <bool name="adjust_view_bounds">true</bool>
</resources>

Aşağıdaki uygulama kodu boole değerini alır:

Kotlin

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

Java

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

Aşağıdaki düzen XML'inde bir özellik için boole kullanılır:

<ImageView
    android:layout_height="fill_parent"
    android:layout_width="fill_parent"
    android:src="@drawable/logo"
    android:adjustViewBounds="@bool/adjust_view_bounds" />

Renk

XML'de tanımlanan bir renk değeri. Renk, bir RGB değeri ve alfa kanalı kullanılarak belirtilir. Bir renk kaynağı kullanabilirsiniz onaltılık renk değeri kabul eden tüm yerler. Bir XML'de android:drawable="@color/green" gibi çekilebilir bir kaynak beklenir.

Değer her zaman bir kare (#) karakteriyle başlar ve ardından Aşağıdaki biçimlerden birinde bulunan Alfa-Kırmızı-Yeşil-Mavi bilgiler:

  • RGB
  • #ARGB
  • #RRGGBB
  • #AARRGGBB

Not: Renk, referans verilen basit bir kaynaktır XML dosyasının adını değil, name özelliğinde sağlanan değer kullanılır. Farklı renk kaynaklarını diğer basit kaynaklarla tek bir XML dosyasında birleştirebilirsiniz. bir <resources> öğesinin altında.

dosya konumu:
res/values/colors.xml

Dosya adı rastgele seçilmiştir. <color> öğesinin name, kaynak kimliği.
kaynak referansı:
. Java'da: R.color.color_name
XML'de: @[package:]color/color_name
söz dizimi:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color
        name="color_name"
        >hex_color</color>
</resources>
öğeler:
<resources>
Zorunlu. Bu, kök düğümdür.

Özellik yok.

<color>
Onaltılık olarak ifade edilen bir renk.

Özellikler:

name
Dize. Renk için bir ad. Bu, kaynak kimliği olarak kullanılır.
örnek:
XML dosyası res/values/colors.xml itibarıyla kaydedildi:
<?xml version="1.0" encoding="utf-8"?>
<resources>
   <color name="opaque_red">#f00</color>
   <color name="translucent_red">#80ff0000</color>
</resources>

Aşağıdaki uygulama kodu renk kaynağını alır:

Kotlin

val color: Int = resources.getColor(R.color.opaque_red)

Java

Resources res = getResources();
int color = res.getColor(R.color.opaque_red);

Aşağıdaki düzen XML'i, rengi bir özelliğe uygular:

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textColor="@color/translucent_red"
    android:text="Hello"/>

Boyut

XML'de tanımlanan bir boyut değeri. Boyut bir sayı ve ardından 10 piksel, 2 inç veya 5 sp gibi bir ölçü birimiyle belirtilir. Aşağıdaki ölçü birimleri Android tarafından desteklenmektedir:

dp
Yoğunluktan bağımsız pikseller: piksellerin fiziksel yoğunluğuna dayalı olarak soyut bir birim tıklayın. Bu birimler, 1 dp'nin kabaca eşit olduğu 160 dpi (inç başına nokta) ekranıyla ilişkilidir. -1 piksel. Daha yüksek yoğunluklu bir ekranda çalışırken 1 dp çizmek için kullanılan piksel sayısı artırılır ekranın dpi'sine uygun bir faktöre göre çarpın.

Benzer şekilde, daha düşük yoğunluklu bir ekranda 1 dp için kullanılan piksel sayısı küçültülür. dps'nin piksele oranı, ekran yoğunluğuna göre değişir. ancak doğrudan orantılı olması gerekmez. Piksel birimleri yerine dp birimleri kullanmak bir çözümdür farklı ekran yoğunluklarına göre düzgün şekilde yeniden boyutlandırabilmenizi sağlar. Farklı platformlarda kullanıcı arayüzü öğelerinizin gerçek boyutları için tutarlılık sağlar. cihazlar.

sp
Ölçekten Bağımsız Pikseller: Bu dp birimine benzer ancak kullanıcının yazı tipine göre ölçeklendirilir boyut tercihini görebilirsiniz. Yazı tipi boyutlarını belirtirken bu birimi kullanmanız önerilir; böylece yazı tipi boyutları ayarlanır hem ekran yoğunluğu hem de kullanıcının tercihine göre ayarlanır.
pt
Puan: Ekranın fiziksel boyutuna göre 1/72 inç, ekranın 72 dpi yoğunlukta olduğu varsayılır.
px
Pikseller: Ekrandaki gerçek piksellere karşılık gelir. Bu birimi kullanmanız önerilmez çünkü gerçek gösterim cihaza göre değişebilir. Farklı cihazların piksel sayıları farklı olabilir ve ekranda daha fazla veya daha az toplam piksele sahip olabilir.
mm
Milimetre: Ekranın fiziksel boyutuna bağlıdır.
in
İnç: Ekranın fiziksel boyutuna bağlıdır.

Not: Boyut, referans verilen basit bir kaynaktır XML dosyasının adını değil, name özelliğinde sağlanan değer kullanılır. Farklı Örneğin, boyut kaynaklarını diğer basit kaynaklarla tek bir XML dosyasında birleştirebilirsiniz. bir <resources> öğesinin altında.

dosya konumu:
res/values/filename.xml

Dosya adı rastgele seçilmiştir. <dimen> öğesinin name, kaynak kimliği.
kaynak referansı:
. Java'da: R.dimen.dimension_name
XML'de: @[package:]dimen/dimension_name
söz dizimi:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen
        name="dimension_name"
        >dimension</dimen>
</resources>
öğeler:
<resources>
Zorunlu. Bu, kök düğümdür.

Özellik yok.

<dimen>
Bolluk ve ardından ölçü birimi (dp, sp, pt, px, mm, inç) ile gösterilen boyut.

Özellikler:

name
Dize. Boyut için bir ad. Bu, kaynak kimliği olarak kullanılır.
örnek:
XML dosyası res/values/dimens.xml itibarıyla kaydedildi:
<?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>

Aşağıdaki uygulama kodu bir boyut alır:

Kotlin

val fontSize: Float = resources.getDimension(R.dimen.font_size)

Java

Resources res = getResources();
float fontSize = res.getDimension(R.dimen.font_size);

Aşağıdaki düzen XML'i, boyutları özelliklere uygular:

<TextView
    android:layout_height="@dimen/textview_height"
    android:layout_width="@dimen/textview_width"
    android:textSize="@dimen/font_size"/>

Kimlik

XML'de tanımlanan benzersiz bir kaynak kimliği. <item> içinde sağladığınız adı kullanarak öğesi olmadan, Android geliştirici araçları projenizin R.java sınıfında benzersiz bir tam sayı oluşturur. Bu değeri, kullanıcı arayüzü düzeninizdeki View gibi uygulama kaynaklarının tanımlayıcısını veya uygulama kodunuzda kullanılacak benzersiz bir tam sayı (örneğin, bir iletişim kutusu kimliği veya sonuç kodu.

Not: Kimlik, referans verilen basit bir kaynaktır XML dosyasının adını değil, name özelliğinde sağlanan değer kullanılır. Farklı Kimlik kaynaklarını diğer basit kaynaklarla tek bir XML dosyasında birleştirebilirsiniz. bir <resources> öğesinin altında. Ayrıca, bir kimlik kaynağı gerçek bir kaynak öğesi: diğer kaynaklara ekleyebileceğiniz veya kullanabileceğiniz benzersiz bir kimliktir benzersiz bir tam sayı olarak ayarlayın.

dosya konumu:
res/values/filename.xml

Dosya adı rastgele seçilmiştir.
kaynak referansı:
. Java'da: R.id.name
XML'de: @[package:]id/name
söz dizimi:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item
        type="id"
        name="id_name" />
</resources>
öğeler:
<resources>
Zorunlu. Bu, kök düğümdür.

Özellik yok.

<item>
Benzersiz bir kimlik tanımlar. Değer kabul etmez, yalnızca nitelikler alır.

Özellikler:

type
"id" olmalıdır.
name
Dize. Kimlik için benzersiz bir ad.
örnek:

res/values/ids.xml itibarıyla kaydedilen XML dosyası:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item type="id" name="button_ok" />
    <item type="id" name="dialog_exit" />
</resources>

Aşağıdaki düzen snippet'i, Button widget'ı için "button_ok" kimliğini kullanır:

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

Buradaki android:id değeri, kimlik referansındaki artı işaretini içermez. çünkü önceki ids.xml örneğinde tanımlandığı gibi kimlik zaten mevcut. Bir android:id="@+id/name" biçimindeki artı işaretini kullanarak bir XML kaynağının kimliğini bu, "name" kimliğinin henüz mevcut olmadığı ve oluşturulduğu anlamına gelir.

Başka bir örnek olarak, aşağıdaki kod snippet'i benzersiz tanımlayıcı olarak "dialog_exit" kimliğini kullanır iletişim kutusu için:

Kotlin

showDialog(R.id.dialog_exit)

Java

showDialog(R.id.dialog_exit);

Aynı uygulamada, iletişim kutusu oluşturulurken "dialog_exit" kimliği karşılaştırılır:

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

Tam sayı

XML'de tanımlanan bir tam sayı.

Not: Tam sayı, referans verilen basit bir kaynaktır XML dosyasının adını değil, name özelliğinde sağlanan değer kullanılır. Farklı tam sayı kaynaklarını diğer basit kaynaklarla tek bir XML dosyasında birleştirebilirsiniz. bir <resources> öğesinin altında.

dosya konumu:
res/values/filename.xml

Dosya adı rastgele seçilmiştir. <integer> öğesinin name, kaynak kimliği.
kaynak referansı:
. Java'da: R.integer.integer_name
XML'de: @[package:]integer/integer_name
söz dizimi:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer
        name="integer_name"
        >integer</integer>
</resources>
öğeler:
<resources>
Zorunlu. Bu, kök düğümdür.

Özellik yok.

<integer>
Tam sayı.

Özellikler:

name
Dize. Tam sayı için bir ad. Bu, kaynak kimliği olarak kullanılır.
örnek:

res/values/integers.xml itibarıyla kaydedilen XML dosyası:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer name="max_speed">75</integer>
    <integer name="min_speed">5</integer>
</resources>

Aşağıdaki uygulama kodu bir tam sayı alır:

Kotlin

val maxSpeed: Int = resources.getInteger(R.integer.max_speed)

Java

Resources res = getResources();
int maxSpeed = res.getInteger(R.integer.max_speed);

Tam sayı dizisi

XML'de tanımlanan bir tam sayı dizisi.

Not: Tam sayı dizisi, referans verilen basit bir kaynaktır XML dosyasının adını değil, name özelliğinde sağlanan değer kullanılır. Farklı tam sayı dizisi kaynaklarını diğer basit kaynaklarla tek bir XML dosyasında birleştirebilirsiniz. bir <resources> öğesinin altında.

dosya konumu:
res/values/filename.xml

Dosya adı rastgele seçilmiştir. <integer-array> öğesinin name, kaynak kimliği.
derlenen kaynak veri türü:
Kaynak işaretçisi, bir tam sayı dizisidir.
kaynak referansı:
. Java'da: R.array.integer_array_name
XML'de: @[package:]array/integer_array_name
söz dizimi:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer-array
        name="integer_array_name">
        <item
            >integer</item>
    </integer-array>
</resources>
öğeler:
<resources>
Zorunlu. Bu, kök düğümdür.

Özellik yok.

<integer-array>
Tam sayı dizisi tanımlar. Bir veya daha fazla alt <item> öğesi içerir.

Özellikler:

android:name
Dize. Dizi adı. Bu ad kaynak olarak kullanılıyor Diziye referans veren kimlik.
<item>
Tam sayı. Değer, başka bir öğeye referans olabilir tam sayı kaynağıdır. Bir <integer-array> öğesinin alt öğesi olmalıdır.

Özellik yok.

örnek:
XML dosyası res/values/integers.xml itibarıyla kaydedildi:
<?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>

Aşağıdaki uygulama kodu, tam sayı dizisini alır:

Kotlin

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

Java

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

Türü belirtilmiş dizi

XML'de tanımlanmış bir TypedArray. Tekliflerinizi otomatikleştirmek ve optimize etmek için çekilebilir dosyalar gibi diğer kaynaklardan bir dizi oluşturmak için kullanılır. Dizinin homojen olması gerekmez. Bu nedenle, karma kaynak türleri dizisi oluşturabilirsiniz ancak veri türlerini doğru şekilde belirleyebilmek için dizide hangi veri türlerinin ve nerede bulunduğunu bilmek önemlidir. her öğe TypedArray sınıfının get...() yöntemleriyle işlenir.

Not: Türü belirtilmiş bir dizi, XML dosyasının adını değil, name özelliğinde sağlanan değer kullanılır. Farklı Böylece, girilen dizi kaynaklarını diğer basit kaynaklarla tek bir XML dosyasında birleştirebilirsiniz. bir <resources> öğesinin altında.

dosya konumu:
res/values/filename.xml

Dosya adı rastgele seçilmiştir. <array> öğesinin name, kaynak kimliği.
derlenen kaynak veri türü:
Kaynak işaretçisi bir TypedArray.
kaynak referansı:
. Java'da: R.array.array_name
XML'de: @[package:]array/array_name
söz dizimi:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <array
        name="integer_array_name">
        <item>resource</item>
    </array>
</resources>
öğeler:
<resources>
Zorunlu. Bu, kök düğümdür.

Özellik yok.

<array>
Dizi tanımlar. Bir veya daha fazla alt <item> öğesi içerir.

Özellikler:

android:name
Dize. Dizi adı. Bu ad kaynak olarak kullanılıyor Diziye referans veren kimlik.
<item>
Genel bir kaynak Değer, bir kaynağa referans veya basit bir veri türü olabilir. Bir <array> öğesinin alt öğesi olmalıdır.

Özellik yok.

örnek:
XML dosyası res/values/arrays.xml itibarıyla kaydedildi:
<?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>

Aşağıdaki uygulama kodu her diziyi ve ardından her dizideki ilk girişi alır:

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