انواع بیشتر منبع

این صفحه انواع منابع زیر را که می‌توانید برون‌سپاری کنید تعریف می‌کند:

Bool
منبع XML که مقدار بولی دارد.
رنگ
منبع XML که مقدار رنگ (رنگ در مبنای شانزده) را حمل می‌کند.
بُعد
منبع XML که مقدار بُعد را (با واحد اندازه‌گیری) حمل می‌کند.
مدرک شناسایی
منبع XML که شناسه یکتایی برای منابع و مؤلفه‌های برنامه ارائه می‌دهد و
عدد صحیح
منبع XML که مقدار عدد صحیح دارد.
آرایه عدد صحیح
منبع XML که آرایه‌ای از اعداد صحیح ارائه می‌دهد.
آرایه تایپ‌شده
منبع XML که TypedArray را ارائه می‌دهد (که می‌توانید از آن برای آرایه‌ای از موارد قابل‌ترسیم استفاده کنید).

بولی

مقدار بولی تعریف‌شده در XML.

توجه: bool منبع ساده‌ای است که بااستفاده از مقدار ارائه‌شده در مشخصه 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>

کد برنامه زیر مقدار بولی را بازیابی می‌کند:

کاتلین

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

جاوا

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 تعریف شده است. رنگ بااستفاده از مقدار RGB و کانال آلفا مشخص می‌شود. می‌توانید از منبع رنگ در هر جایی که مقدار رنگ شانزده‌شانزدهی را می‌پذیرد استفاده کنید. همچنین می‌توانید از منبع رنگی استفاده کنید وقتی که منبع ترسیم‌شدنی در XML انتظار می‌رود، مثل android:drawable="@color/green".

این مقدار همیشه با نویسه پوند (#) شروع می‌شود و به‌دنبال آن اطلاعات آلفا-قرمز-سبز-آبی در یکی از قالب‌های زیر می‌آید:

  • #RGB
  • #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>

کد برنامه زیر منبع رنگ را بازیابی می‌کند:

کاتلین

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

جاوا

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 تعریف شده است. یک بعد با یک عدد و به‌دنبال آن یک واحد اندازه‌گیری، مانند 10px،‏ 2in، یا 5sp مشخص می‌شود. Android از واحدهای اندازه‌گیری زیر پشتیبانی می‌کند:

dp
پیکسل مستقل از تراکم: واحدی انتزاعی که براساس تراکم فیزیکی صفحه‌نمایش است. این واحدها نسبت‌به صفحه‌نمایش ۱۶۰ dpi (نقطه در اینچ) هستند که در آن ۱ dp تقریباً برابر با ۱ px است. هنگام اجرا در صفحه‌نمایش با تراکم بالاتر، تعداد پیکسل‌های استفاده‌شده برای ترسیم ۱ dp با ضریبی مناسب برای dpi صفحه‌نمایش افزایش می‌یابد.

به‌همین ترتیب، وقتی در صفحه‌نمایشی با تراکم پایین‌تر هستید، تعداد پیکسل‌های استفاده‌شده برای ۱ dp کاهش می‌یابد. نسبت dp به پیکسل با تراکم صفحه‌نمایش تغییر می‌کند، اما لزوماً به‌طور مستقیم متناسب نیست. استفاده از واحدهای dp به‌جای واحدهای px راه‌حلی است برای اینکه ابعاد نما در چیدمان شما به‌درستی برای تراکم‌های مختلف صفحه‌نمایش تغییر اندازه دهد. این واحد اندازه‌گیری باعث می‌شود اندازه عناصر میانای کاربر در دنیای واقعی در دستگاه‌های مختلف هماهنگ باشد.

sp
پیکسل‌های مستقل از مقیاس - این واحد مانند dp است، اما براساس اولویت اندازه قلم کاربر نیز مقیاس‌بندی می‌شود. توصیه می‌شود هنگام مشخص کردن اندازه‌های قلم از این واحد استفاده کنید تا هم برای تراکم صفحه‌نمایش و هم برای اولویت کاربر تنظیم شوند.
pt
نقطه: ۱/۷۲ اینچ براساس اندازه فیزیکی صفحه‌نمایش، با فرض صفحه‌نمایشی با تراکم ۷۲ نقطه در اینچ.
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،‏ px،‏ mm،‏ in) نشان داده می‌شود.

مشخصه ها:

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>

کد برنامه زیر بُعدی را بازیابی می‌کند:

کاتلین

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

جاوا

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" به‌عنوان شناسه یکتا برای کادر گفتگو استفاده می‌کند:

کاتلین

showDialog(R.id.dialog_exit)

جاوا

showDialog(R.id.dialog_exit);

در همان برنامه، شناسه "dialog_exit" هنگام ایجاد کادر گفتگو مقایسه می‌شود:

کاتلین

override fun onCreateDialog(id: Int): Dialog? {
    return when(id) {
        R.id.dialog_exit -> {
            ...
        }
        else -> {
            null
        }
    }
}

جاوا

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>

کد برنامه زیر یک عدد صحیح را بازیابی می‌کند:

کاتلین

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

جاوا

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
رشته. نامی برای آرایه. این نام به‌عنوان شناسه منبع برای ارجاع به آرایه استفاده می‌شود.
<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>

کد برنامه زیر آرایه عدد صحیح را بازیابی می‌کند:

کاتلین

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

جاوا

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
رشته. نامی برای آرایه. این نام به‌عنوان شناسه منبع برای ارجاع به آرایه استفاده می‌شود.
<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>

کد برنامه زیر هر آرایه را بازیابی می‌کند و سپس اولین ورودی را در هر آرایه به‌دست می‌آورد:

کاتلین

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)

جاوا

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