المزيد من أنواع الموارد

تحدِّد هذه الصفحة الأنواع التالية من الموارد التي يمكنك الاستعانة بها خارجيًا:

قيمة منطقية
مورد XML الذي يشتمل على قيمة منطقية.
اللون
مورد XML يحمل قيمة لون (لون سداسي عشري).
السمة
مورد XML يحمل قيمة سمة (بوحدة قياس).
الإندونيسية
مورد XML الذي يوفر معرّفًا فريدًا لموارد التطبيق والمكونات.
عدد صحيح
مورد XML الذي يشتمل على قيمة عدد صحيح
مصفوفة عدد صحيح
مورد XML يضم صفيفًا من الأعداد الصحيحة.
مصفوفة تمت كتابتها
مورد XML يوفّر TypedArray (يمكنك استخدامه بالنسبة إلى مصفوفة من العناصر القابلة للرسم).

منطقية

قيمة منطقية محدّدة في XML.

ملاحظة: القيمة المنطقية هي مورد بسيط تتم الإشارة إليه باستخدام القيمة المقدّمة في السمة name، وليس اسم ملف XML. بالنسبة مثلاً، يمكنك دمج موارد منطقية مع موارد بسيطة أخرى في ملف XML واحد، أسفل عنصر <resources> واحد.

مكان الملف:

res/values/filename.xml
ويكون اسم الملف عشوائيًا. يتم استخدام name للعنصر <bool> كمورد رقم التعريف
مرجع الموارد:
في Java: R.bool.bool_name
في ملف XML: @[package:]bool/bool_name
بناء الجملة:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool
        name="bool_name"
        >[true | false]</bool>
</resources>
العناصر:
<resources>
حقل مطلوب. هذه هي العقدة الجذر.

ما مِن سمات.

<bool>
قيمة منطقية: true أو false

السمات:

name
سلسلة: اسم للقيمة المنطقية. يتم استخدام هذا كرقم تعريف المورد.
مثلا:
تم حفظ ملف XML في 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>

يُرجع رمز التطبيق التالي القيمة المنطقية:

Kotlin

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

Java

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

يستخدم تنسيق XML التالي القيمة المنطقية لسمة:

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

اللون

قيمة لون يتم تحديدها في XML. ويتم تحديد اللون باستخدام قيمة نموذج أحمر أخضر أزرق وقناة ألفا. يمكنك استخدام مورد الألوان أي مكان يقبل قيمة لون سداسية عشرية. يمكنك أيضًا استخدام مورد ألوان عند من المتوقع أن يتم عرض مورد قابل للرسم بتنسيق XML، مثل android:drawable="@color/green".

تبدأ القيمة دائمًا بالجنيه (#) حرف (#)، متبوعًا معلومات ألفا-الأحمر-الأخضر-الأزرق بأحد التنسيقات التالية:

  • #نموذج أحمر أخضر أزرق
  • #ARGB
  • #RRGGBB
  • #AARRGGBB

ملاحظة: اللون هو مورد بسيط تتم الإشارة إليه باستخدام القيمة المقدّمة في السمة name، وليس اسم ملف XML. بالنسبة مثلاً، يمكنك الجمع بين موارد الألوان والموارد البسيطة الأخرى في ملف XML واحد، أسفل عنصر <resources> واحد.

مكان الملف:

res/values/colors.xml
ويكون اسم الملف عشوائيًا. يتم استخدام name للعنصر <color> باعتباره معرّف المورد.
مرجع الموارد:
في Java: R.color.color_name
في ملف XML: @[package:]color/color_name
بناء الجملة:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color
        name="color_name"
        >hex_color</color>
</resources>
العناصر:
<resources>
حقل مطلوب. هذه هي العقدة الجذر.

ما مِن سمات.

<color>
لون يتم التعبير عنه بتنسيق سداسي عشري.

السمات:

name
سلسلة: اسم للون. يتم استخدام هذا كرقم تعريف المورد.
مثلا:
تم حفظ ملف XML في 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>

يُسترد رمز التطبيق التالي مورد الألوان:

Kotlin

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

Java

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

يطبق تنسيق XML التالي اللون على السمة:

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

البُعد

قيمة سمة محدّدة في ملف XML سمة يتم تحديدها برقم يليه وحدة قياس، مثل 10 بكسل أو 2 بوصة أو 5sp. يتيح Android استخدام وحدات القياس التالية:

dp
وحدات البكسل غير المرتبطة بالكثافة: وحدة مجردة تستند إلى الكثافة الفيزيائية الشاشة. وتكون هذه الوحدات نسبية إلى شاشة مقاسها 160 نقطة لكل بوصة، والتي تساوي فيها نسبة 1 dp تقريبًا. إلى 1 بكسل. عند التشغيل على شاشة أعلى الكثافة، يتم تكبير عدد وحدات البكسل المستخدَمة لرسم 1 dp. باستخدام عامل مناسب لنسبة النقاط لكل بوصة (DPI) للشاشة.

وبالمثل، عند استخدام شاشة منخفضة الكثافة، يتم تقليل عدد وحدات البكسل المستخدمة في 1 بكسل مستقل الكثافة. تتغير نسبة وحدات البكسل في الثانية إلى وحدات البكسل حسب كثافة الشاشة، ولكن ليس بالضرورة بتناسب مباشر. يُمثل استخدام وحدات البكسل الكثافة بدلاً من وحدات البكسل الحل لتغيير حجم أبعاد العرض في التخطيط بشكل صحيح بحيث تتوافق مع كثافات الشاشة المختلفة. ويوفر الاتساق للأحجام الفعلية لعناصر واجهة المستخدم عبر مختلف الأجهزة.

sp
وحدات بكسل مستقلة عن الحجم: تشبه وحدة البكسل المستقلة الكثافة، ولكن يتم ضبطها أيضًا من خلال خط المستخدم تفضيل الحجم. نُوصي باستخدام هذه الوحدة عند تحديد أحجام الخط، حتى يتم تعديلها لكل من كثافة الشاشة وتفضيل المستخدم.
pt
النقاط: 1/72 من البوصة حسب الحجم الفعلي للشاشة، لنفترض أن هناك كثافة تبلغ 72 نقطة لكل بوصة.
px
وحدات البكسل: تتوافق مع وحدات البكسل الفعلية على الشاشة. لا نوصي باستخدام هذه الوحدة، لأنه ويمكن أن يختلف التمثيل الفعلي عبر الأجهزة. يمكن أن يكون للأجهزة المختلفة عدد مختلف من وحدات البكسل لكل بوصة وقد يحتوي على إجمالي وحدات بكسل أكثر أو أقل على الشاشة.
mm
المليمتر: بناءً على الحجم الفعلي للشاشة
in
بوصة: بناءً على الحجم الفعلي للشاشة

ملاحظة: السمة هي مورد بسيط تتم الإشارة إليه. باستخدام القيمة المقدّمة في السمة name، وليس اسم ملف XML. بالنسبة مثلاً، يمكنك الجمع بين موارد الأبعاد والموارد البسيطة الأخرى في ملف XML واحد، أسفل عنصر <resources> واحد.

مكان الملف:

res/values/filename.xml
ويكون اسم الملف عشوائيًا. يتم استخدام name للعنصر <dimen> باعتباره معرّف المورد.
مرجع الموارد:
في Java: R.dimen.dimension_name
في ملف XML: @[package:]dimen/dimension_name
بناء الجملة:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen
        name="dimension_name"
        >dimension</dimen>
</resources>
العناصر:
<resources>
حقل مطلوب. هذه هي العقدة الجذر.

ما مِن سمات.

<dimen>
سمة يتم تمثيلها بعدد عائم تليها وحدة قياس (dp، sp، pt، بكسل، ملم، بوصة).

السمات:

name
سلسلة: اسم للسمة. يتم استخدام هذا كرقم تعريف المورد.
مثلا:
تم حفظ ملف XML في 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>

يعمل رمز التطبيق التالي على استرداد إحدى السمات:

Kotlin

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

Java

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

يطبّق تنسيق XML التالي الأبعاد على السمات:

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

رقم التعريف

معرّف مورد فريد محدّد في XML باستخدام الاسم الذي أدخلته في "<item>" ستنشئ أدوات مطوّري برامج Android عددًا صحيحًا فريدًا في فئة R.java الخاصة بمشروعك، ويمكنك استخدامه كعدد معرّف لموارد التطبيق، مثل View في تنسيق واجهة المستخدم أو عدد صحيح فريد لاستخدامه في رمز التطبيق، مثل معرّف لمربع حوار أو رمز النتيجة.

ملاحظة: رقم التعريف هو مورد بسيط تتم الإشارة إليه باستخدام القيمة المقدّمة في السمة name، وليس اسم ملف XML. بالنسبة مثلاً، يمكنك الجمع بين موارد المعرفات وموارد بسيطة أخرى في ملف XML واحد، أسفل عنصر <resources> واحد. أيضًا، لا يشير مورد المعرف إلى عنصر مورد فعلي: معرف فريد يمكنك إرفاقه بموارد أخرى أو استخدامه كعدد صحيح فريد في تطبيقك.

مكان الملف:

res/values/filename.xml
ويكون اسم الملف عشوائيًا.
مرجع الموارد:
في Java: R.id.name
في ملف XML: @[package:]id/name
بناء الجملة:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item
        type="id"
        name="id_name" />
</resources>
العناصر:
<resources>
حقل مطلوب. هذه هي العقدة الجذر.

ما مِن سمات.

<item>
تعريف معرّف فريد لا تأخذ أي قيمة، بل السمات فقط.

السمات:

type
يجب أن يكون "id".
name
سلسلة: تمثّل هذه السمة اسمًا فريدًا للمعرّف.
مثلا:

تم حفظ ملف XML في 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>

يستخدم مقتطف التنسيق التالي معرّف "button_ok" لأداة Button:

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

لا تشمل قيمة android:id هنا علامة الجمع في مرجع المعرّف، لأنّ المعرّف متوفّر حاليًا، كما هو موضّح في مثال ids.xml السابق. عند تحديد معرّف لمورد XML باستخدام علامة الجمع بالتنسيق android:id="@+id/name" هذا يعني أنّ رقم تعريف "name" غير متوفّر بعد، وأنّه تم إنشاؤه.

كمثال آخر، يستخدم مقتطف الرمز التالي معرّف "dialog_exit" كمعرّف فريد. لأحد الحوارات:

Kotlin

showDialog(R.id.dialog_exit)

Java

showDialog(R.id.dialog_exit);

في التطبيق نفسه، تتم مقارنة رقم تعريف "dialog_exit" عند إنشاء مربّع حوار:

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

عدد صحيح

عدد صحيح تم تحديده في ملف XML.

ملاحظة: العدد الصحيح هو مورد بسيط تتم الإشارة إليه. باستخدام القيمة المقدّمة في السمة name، وليس اسم ملف XML. بالنسبة مثلاً، يمكنك الجمع بين موارد الأعداد الصحيحة والموارد البسيطة الأخرى في ملف XML واحد، أسفل عنصر <resources> واحد.

مكان الملف:

res/values/filename.xml
ويكون اسم الملف عشوائيًا. يتم استخدام name للعنصر <integer> باعتباره معرّف المورد.
مرجع الموارد:
في Java: R.integer.integer_name
في ملف XML: @[package:]integer/integer_name
بناء الجملة:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer
        name="integer_name"
        >integer</integer>
</resources>
العناصر:
<resources>
حقل مطلوب. هذه هي العقدة الجذر.

ما مِن سمات.

<integer>
عدد صحيح

السمات:

name
سلسلة: تمثّل هذه السمة اسم العدد الصحيح. يتم استخدام هذا كرقم تعريف المورد.
مثلا:

تم حفظ ملف XML في 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>

يسترد رمز التطبيق التالي عددًا صحيحًا:

Kotlin

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

Java

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

مصفوفة عدد صحيح

مصفوفة من الأعداد الصحيحة المحددة في XML.

ملاحظة: الصفيفة من عدد صحيح هي مورد بسيط تتم الإشارة إليه باستخدام القيمة المقدّمة في السمة name، وليس اسم ملف XML. بالنسبة مثلاً، يمكنك الجمع بين موارد صفيف الأعداد الصحيحة والموارد البسيطة الأخرى في ملف XML واحد، أسفل عنصر <resources> واحد.

مكان الملف:

res/values/filename.xml
ويكون اسم الملف عشوائيًا. يتم استخدام name للعنصر <integer-array> باعتباره معرّف المورد.
نوع بيانات الموارد المجمّعة:
مؤشر المورد إلى مصفوفة من الأعداد الصحيحة.
مرجع الموارد:
في Java: R.array.integer_array_name
في ملف XML: @[package:]array/integer_array_name
بناء الجملة:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer-array
        name="integer_array_name">
        <item
            >integer</item>
    </integer-array>
</resources>
العناصر:
<resources>
حقل مطلوب. هذه هي العقدة الجذر.

ما مِن سمات.

<integer-array>
: تعرِّف هذه السمة مصفوفة من الأعداد الصحيحة. يحتوي على عنصر <item> فرعي واحد أو أكثر.

السمات:

android:name
سلسلة: تمثّل هذه السمة اسم الصفيفة. يتم استخدام هذا الاسم كمورد ID للإشارة إلى الصفيفة.
<item>
عدد صحيح يمكن أن تكون القيمة مرجعًا إلى طرف آخر مورد لعدد صحيح. يجب أن تكون عنصرًا ثانويًا لعنصر <integer-array>.

ما مِن سمات.

مثلا:
تم حفظ ملف XML في 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>

يسترد رمز التطبيق التالي صفيف العدد الصحيح:

Kotlin

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

Java

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

المصفوفة المكتوبة

تمثّل هذه السمة TypedArray محدّدًا في ملف XML. يمكنك استخدام ذلك لإنشاء صفيف من الموارد الأخرى، مثل العناصر القابلة للرسم. ليس من الضروري أن تكون الصفيفة متجانسة، لذا يمكنك إنشاء صفيف من أنواع موارد مختلطة، ولكن على دراية بماهية أنواع البيانات ومكانها في الصفيفة بحيث يمكنك الحصول على كل عنصر بطرق get...() في فئة TypedArray.

ملاحظة: المصفوفة المكتوبة هو مورد بسيط تتم الإشارة إليه باستخدام القيمة المقدّمة في السمة name، وليس اسم ملف XML. بالنسبة مثلاً، يمكنك دمج موارد الصفائف المكتوبة مع موارد بسيطة أخرى في ملف XML واحد، أسفل عنصر <resources> واحد.

مكان الملف:

res/values/filename.xml
ويكون اسم الملف عشوائيًا. يتم استخدام name للعنصر <array> باعتباره معرّف المورد.
نوع بيانات الموارد المجمّعة:
مؤشر المورد إلى TypedArray
مرجع الموارد:
في Java: R.array.array_name
في ملف XML: @[package:]array/array_name
بناء الجملة:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <array
        name="integer_array_name">
        <item>resource</item>
    </array>
</resources>
العناصر:
<resources>
حقل مطلوب. هذه هي العقدة الجذر.

ما مِن سمات.

<array>
تعريف مصفوفة يحتوي على عنصر <item> فرعي واحد أو أكثر.

السمات:

android:name
سلسلة: تمثّل هذه السمة اسم الصفيفة. يتم استخدام هذا الاسم كمورد ID للإشارة إلى الصفيفة.
<item>
مورد عام: يمكن أن تكون القيمة مرجعًا لمورد أو نوع بيانات بسيط. يجب أن تكون عنصرًا ثانويًا لعنصر <array>.

ما مِن سمات.

مثلا:
تم حفظ ملف XML في 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>

يسترد رمز التطبيق التالي كل صفيف ثم يحصل على الإدخال الأول في كل صفيف:

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