منابع قابل ترسیم

یک منبع قابل ترسیم یک مفهوم کلی برای یک گرافیک است که می‌توان آن را روی صفحه نمایش کشید و می‌توانید آن را با APIهایی مانند getDrawable(int) بازیابی کنید یا برای یک منبع XML دیگر با ویژگی‌هایی مانند android:drawable و android:icon اعمال کنید. انواع مختلفی از نقشه کشی وجود دارد:

فایل بیت مپ
یک فایل گرافیکی بیت مپ (PNG، WEBP، JPG یا GIF). یک BitmapDrawable ایجاد می کند.
فایل نه پچ
یک فایل PNG با مناطق قابل کشش برای تغییر اندازه تصاویر بر اساس محتوا ( .9.png ). یک NinePatchDrawable ایجاد می کند.
لیست لایه ها
قابل ترسیمی که آرایه ای از کشش های دیگر را مدیریت می کند. اینها به ترتیب آرایه ترسیم می شوند، بنابراین عنصری که بزرگترین شاخص را دارد در بالا رسم می شود. یک LayerDrawable ایجاد می کند.
فهرست ایالتی
یک فایل XML که به گرافیک‌های بیت مپ مختلف برای حالت‌های مختلف ارجاع می‌دهد - به عنوان مثال، برای استفاده از یک تصویر متفاوت هنگام ضربه زدن روی دکمه. StateListDrawable ایجاد می کند.
لیست سطح
یک فایل XML که یک قابل ترسیم را تعریف می‌کند که تعدادی از قابل ترسیم‌های جایگزین را مدیریت می‌کند که به هر کدام حداکثر مقدار عددی اختصاص داده شده است. یک LevelListDrawable ایجاد می کند.
انتقال قابل ترسیم
یک فایل XML که یک قابل ترسیم را تعریف می کند که می تواند بین دو منبع قابل ترسیم متقاطع محو شود. یک TransitionDrawable ایجاد می کند.
درونی قابل کشیدن
یک فایل XML که یک قرعه کشی را تعریف می کند که قابل ترسیم دیگری را با فاصله مشخصی درج می کند. این زمانی مفید است که یک نما به یک پس زمینه قابل ترسیم نیاز دارد که کوچکتر از محدوده واقعی نما باشد.
گیره قابل کشیدن
یک فایل XML که یک قابل ترسیم را تعریف می کند که بر اساس مقدار سطح فعلی این قرعه کشی، قرعه کشی دیگری را برش می دهد. یک ClipDrawable ایجاد می کند.
قابل ترسیم مقیاس
یک فایل XML که یک قرعه کشی را تعریف می کند که اندازه آن را بر اساس مقدار سطح فعلی آن تغییر می دهد. یک ScaleDrawable ایجاد می کند
شکل قابل ترسیم
یک فایل XML که یک شکل هندسی را شامل رنگ ها و گرادیان ها تعریف می کند. یک GradientDrawable ایجاد می کند.

برای اطلاعات در مورد نحوه ایجاد AnimationDrawable ، به سند منابع انیمیشن مراجعه کنید.

توجه: یک منبع رنگی همچنین می تواند به عنوان قابل ترسیم در XML استفاده شود. به عنوان مثال، هنگام ایجاد فهرست قابل ترسیم وضعیت ، می‌توانید به یک منبع رنگی برای ویژگی android:drawable ( android:drawable="@color/green" ) ارجاع دهید.

بیت مپ

یک تصویر بیت مپ. اندروید فایل‌های بیت مپ را در قالب‌های زیر پشتیبانی می‌کند: PNG (ترجیحا)، WEBP (ترجیحا، به سطح API 17 یا بالاتر نیاز دارد)، JPG (قابل قبول)، GIF (دلسرد).

می توانید مستقیماً با استفاده از نام فایل به عنوان شناسه منبع به یک فایل بیت مپ ارجاع دهید یا یک شناسه منبع مستعار در XML ایجاد کنید.

توجه: فایل‌های بیت مپ ممکن است به طور خودکار با فشرده‌سازی تصویر بدون تلفات توسط ابزار aapt در طول فرآیند ساخت بهینه شوند. به عنوان مثال، یک PNG با رنگ واقعی که به بیش از 256 رنگ نیاز ندارد، ممکن است به یک PNG 8 بیتی با یک پالت رنگ تبدیل شود. این منجر به تصویری با کیفیت برابر می شود که به حافظه کمتری نیاز دارد.

بنابراین، توجه داشته باشید که باینری های تصویر قرار داده شده در این دایرکتوری می توانند در طول ساخت تغییر کنند. اگر قصد دارید یک تصویر را به صورت جریان بیت بخوانید تا آن را به بیت مپ تبدیل کنید، به جای آن تصاویر خود را در پوشه res/raw/ قرار دهید، جایی که بهینه نشده اند.

فایل بیت مپ

یک فایل بیت مپ یک فایل PNG، WEBP، JPG یا GIF است. زمانی که آن ها را در دایرکتوری res/drawable/ ذخیره می کنید، اندروید یک منبع Drawable برای هر یک از این فایل ها ایجاد می کند.

محل فایل:
res/drawable/ filename .png ( .png ، .webp ، .jpg . یا .gif )
نام فایل شناسه منبع است
نوع داده منبع کامپایل شده:
اشاره گر منبع به BitmapDrawable
مرجع منبع:
در جاوا: R.drawable. filename
در XML: @[ package :]drawable/ filename
مثال:
با یک تصویر ذخیره شده در res/drawable/myimage.png ، این طرح بندی XML تصویر را روی یک نما اعمال می کند:
<ImageView
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:src="@drawable/myimage" />

کد برنامه زیر تصویر را به عنوان یک Drawable بازیابی می کند:

کاتلین

val drawable: Drawable? = ResourcesCompat.getDrawable(resources, R.drawable.myimage, null)

جاوا

Resources res = getResources();
Drawable drawable = ResourcesCompat.getDrawable(res, R.drawable.myimage, null);
همچنین ببینید:

بیت مپ XML

یک بیت مپ XML منبعی است که در XML تعریف شده است که به یک فایل بیت مپ اشاره می کند. افکت نام مستعار یک فایل بیت مپ خام است. XML می تواند ویژگی های اضافی را برای بیت مپ مشخص کند، مانند dithering و tiling.

توجه: می توانید از عنصر <bitmap> به عنوان فرزند عنصر <item> استفاده کنید. به عنوان مثال، هنگام ایجاد یک لیست وضعیت یا لیست لایه ، می توانید ویژگی android:drawable از عنصر <item> حذف کنید و یک <bitmap> را در داخل آن قرار دهید که آیتم قابل ترسیم را تعریف می کند.

محل فایل:
res/drawable/ filename .xml
نام فایل شناسه منبع است
نوع داده منبع کامپایل شده:
اشاره گر منبع به BitmapDrawable
مرجع منبع:
در جاوا: R.drawable. filename
در XML: @[ package :]drawable/ filename
نحو:
<?xml version="1.0" encoding="utf-8"?>
<bitmap
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@[package:]drawable/drawable_resource"
    android:antialias=["true" | "false"]
    android:dither=["true" | "false"]
    android:filter=["true" | "false"]
    android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" |
                      "fill_vertical" | "center_horizontal" | "fill_horizontal" |
                      "center" | "fill" | "clip_vertical" | "clip_horizontal"]
    android:mipMap=["true" | "false"]
    android:tileMode=["disabled" | "clamp" | "repeat" | "mirror"] />
عناصر:
<bitmap>
مورد نیاز. منبع بیت مپ و ویژگی های آن را تعریف می کند.

ویژگی ها:

xmlns:android
رشته . فضای نام XML را تعریف می کند که باید "http://schemas.android.com/apk/res/android" باشد. این فقط در صورتی لازم است که <bitmap> عنصر ریشه باشد. هنگامی که <bitmap> در داخل <item> تودرتو است، به آن نیازی نیست.
android:src
منبع قابل ترسیم مورد نیاز . ارجاع به یک منبع قابل ترسیم
android:antialias
بولی . Antialiasing را فعال یا غیرفعال می کند.
android:dither
بولی . در صورتی که بیت مپ پیکربندی پیکسلی مشابهی با صفحه نمایش نداشته باشد، مانند نقشه بیت ARGB 8888 در صفحه RGB 565، تداخل نقشه بیت را فعال یا غیرفعال می کند.
android:filter
بولی . فیلتر بیت مپ را فعال یا غیرفعال می کند. فیلتر کردن زمانی استفاده می شود که بیت مپ کوچک یا کشیده شود تا ظاهر آن صاف شود.
android:gravity
کلمه کلیدی گرانش را برای بیت مپ تعریف می کند. اگر بیت مپ از ظرف کوچکتر باشد، گرانش نشان می دهد که در کجا باید کشش را در ظرف آن قرار داد.

باید یک یا چند عدد از مقادیر ثابت زیر باشد که با | از هم جدا شده اند :

ارزش توضیحات
top جسم را در بالای ظرفش قرار دهید، نه اینکه اندازه آن را تغییر دهید.
bottom جسم را در پایین ظرف آن قرار دهید، نه اینکه اندازه آن را تغییر دهید.
left جسم را در لبه سمت چپ ظرف آن قرار دهید، نه اینکه اندازه آن را تغییر دهید.
right جسم را در لبه سمت راست ظرف آن قرار دهید، نه اینکه اندازه آن را تغییر دهید.
center_vertical جسم را در مرکز عمودی ظرف آن قرار دهید، نه اینکه اندازه آن را تغییر دهید.
fill_vertical در صورت نیاز، اندازه عمودی جسم را افزایش دهید تا ظرف آن را به طور کامل پر کند.
center_horizontal جسم را در مرکز افقی ظرف آن قرار دهید، نه اینکه اندازه آن را تغییر دهید.
fill_horizontal در صورت نیاز، اندازه افقی شی را افزایش دهید تا ظرف آن را کاملا پر کند.
center جسم را در مرکز ظرف خود در هر دو محور عمودی و افقی قرار دهید، بدون اینکه اندازه آن تغییر کند.
fill در صورت نیاز، اندازه افقی و عمودی شی را افزایش دهید تا ظرف آن را کاملاً پر کند. این پیش فرض است.
clip_vertical گزینه دیگری که می‌توان آن را طوری تنظیم کرد که لبه‌های بالایی و/یا پایینی کودک تا مرز ظرف آن بسته شود. گیره بر اساس گرانش عمودی است: یک گرانش بالا لبه پایینی را می‌بندد، یک گرانش پایین لبه بالایی را می‌بندد، و هیچ‌کدام هر دو لبه را نمی‌گیرند.
clip_horizontal گزینه دیگری که می‌توان آن را طوری تنظیم کرد که لبه‌های چپ و/یا راست کودک تا مرز ظرف آن بریده شود. گیره بر اساس گرانش افقی است: گرانش سمت چپ لبه سمت راست را می‌بندد، گرانش سمت راست لبه چپ را می‌بندد و هیچ‌کدام هر دو لبه را نمی‌گیرند.
android:mipMap
بولی . راهنمایی mipmap را فعال یا غیرفعال می کند. برای اطلاعات بیشتر به setHasMipMap() مراجعه کنید. مقدار پیش فرض نادرست است.
android:tileMode
کلمه کلیدی حالت کاشی را تعریف می کند. هنگامی که حالت کاشی فعال است، بیت مپ تکرار می شود. هنگامی که حالت کاشی فعال است، جاذبه نادیده گرفته می شود.

باید یکی از مقادیر ثابت زیر باشد:

ارزش توضیحات
disabled نقشه بیت را کاشی نکنید. این مقدار پیش فرض است.
clamp اگر سایه زن خارج از محدوده اصلی خود کشیده می شود، رنگ لبه را تکرار کنید
repeat تصویر سایه زن را به صورت افقی و عمودی تکرار کنید.
mirror تصویر سایه زن را به صورت افقی و عمودی تکرار کنید، تصاویر آینه ای متناوب را به گونه ای که تصاویر مجاور همیشه درز داشته باشند.
مثال:
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/icon"
    android:tileMode="repeat" />
همچنین ببینید:

نه پچ

NinePatch یک تصویر PNG است که در آن می‌توانید مناطق قابل کشش را تعریف کنید که Android آن‌ها را در زمانی که محتوای داخل نما از محدوده‌های معمولی تصویر فراتر می‌رود، مقیاس می‌دهد. شما معمولاً این نوع تصویر را به عنوان پس‌زمینه نمایی اختصاص می‌دهید که حداقل یک بعد آن روی "wrap_content" تنظیم شده است.

هنگامی که نما رشد می کند تا محتوا را در خود جای دهد، تصویر 9 پچ نیز برای مطابقت با اندازه نما مقیاس می شود. نمونه ای از استفاده از یک تصویر نه وصله، پس زمینه ای است که توسط ویجت Button استاندارد اندروید استفاده می شود، که باید برای قرار دادن متن (یا تصویر) داخل دکمه کشیده شود.

مانند یک بیت مپ معمولی، می‌توانید به یک فایل 9 پچ مستقیماً یا از منبعی که توسط XML تعریف شده است ارجاع دهید.

برای یک بحث کامل در مورد نحوه ایجاد یک فایل نه وصله با مناطق قابل کشش، به ایجاد بیت مپ های قابل تغییر اندازه (فایل های 9 پچ) مراجعه کنید.

فایل نه پچ

محل فایل:
res/drawable/ filename .9.png
نام فایل شناسه منبع است
نوع داده منبع کامپایل شده:
اشاره گر منبع به یک NinePatchDrawable
مرجع منبع:
در جاوا: R.drawable. filename
در XML: @[ package :]drawable/ filename
مثال:
با یک تصویر ذخیره شده در res/drawable/myninepatch.9.png ، این طرح بندی XML، نه وصله را برای یک view اعمال می کند:
<Button
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:background="@drawable/myninepatch" />
همچنین ببینید:

XML نه پچ

یک XML nine-patch یک منبع تعریف شده در XML است که به یک فایل 9 Patch اشاره می کند. XML می تواند دیترینگ را برای تصویر مشخص کند.

محل فایل:
res/drawable/ filename .xml
نام فایل شناسه منبع است
نوع داده منبع کامپایل شده:
اشاره گر منبع به یک NinePatchDrawable
مرجع منبع:
در جاوا: R.drawable. filename
در XML: @[ package :]drawable/ filename
نحو:
<?xml version="1.0" encoding="utf-8"?>
<nine-patch
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@[package:]drawable/drawable_resource"
    android:dither=["true" | "false"] />
عناصر:
<nine-patch>
مورد نیاز. منبع نه پچ و خواص آن را تعریف می کند.

ویژگی ها:

xmlns:android
رشته . مورد نیاز. فضای نام XML را تعریف می کند که باید "http://schemas.android.com/apk/res/android" باشد.
android:src
منبع قابل ترسیم مورد نیاز . ارجاع به یک فایل نه پچ.
android:dither
بولی . در صورتی که بیت مپ پیکربندی پیکسلی مشابهی با صفحه نمایش نداشته باشد، مانند نقشه بیت ARGB 8888 در صفحه RGB 565، تداخل نقشه بیت را فعال یا غیرفعال می کند.
مثال:
<?xml version="1.0" encoding="utf-8"?>
<nine-patch xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/myninepatch"
    android:dither="false" />

لیست لایه ها

LayerDrawable یک آبجکت قابل ترسیم است که آرایه ای از کشش های دیگر را مدیریت می کند. هر قرعه کشی در لیست به ترتیب فهرست ترسیم می شود. آخرین قرعه کشی در لیست در بالا کشیده شده است.

هر قابل ترسیم با یک عنصر <item> در داخل یک عنصر <layer-list> نشان داده می شود.

محل فایل:
res/drawable/ filename .xml
نام فایل شناسه منبع است
نوع داده منبع کامپایل شده:
اشاره گر منبع به LayerDrawable
مرجع منبع:
در جاوا: R.drawable. filename
در XML: @[ package :]drawable/ filename
نحو:
<?xml version="1.0" encoding="utf-8"?>
<layer-list
    xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:drawable="@[package:]drawable/drawable_resource"
        android:id="@[+][package:]id/resource_name"
        android:top="dimension"
        android:right="dimension"
        android:bottom="dimension"
        android:left="dimension" />
</layer-list>
عناصر:
<layer-list>
مورد نیاز. این باید عنصر ریشه باشد. حاوی یک یا چند عنصر <item> است.

ویژگی ها:

xmlns:android
رشته . مورد نیاز. فضای نام XML را تعریف می کند که باید "http://schemas.android.com/apk/res/android" باشد.
<item>
یک drawable را برای قرار دادن در لایه قابل ترسیم، در موقعیتی که با ویژگی های آن تعریف شده است، تعریف می کند. باید فرزند عنصر <layer-list> باشد. عناصر <bitmap> فرزند را می پذیرد.

ویژگی ها:

android:drawable
منبع قابل ترسیم مورد نیاز . ارجاع به یک منبع قابل ترسیم
android:id
شناسه منبع یک شناسه منبع منحصر به فرد برای این قابل ترسیم. برای ایجاد یک شناسه منبع جدید برای این مورد، از فرم "@+id/ name " استفاده کنید. علامت مثبت نشان می دهد که این به عنوان یک شناسه جدید ایجاد شده است. شما می توانید از این شناسه برای بازیابی و اصلاح نقشه کشی با View.findViewById() یا Activity.findViewById() استفاده کنید.
android:top
بعد . افست بالا، به عنوان یک مقدار بعد یا منبع بعد .
android:right
بعد . افست سمت راست، به عنوان یک مقدار بعد یا منبع بعد .
android:bottom
بعد . افست پایین، به عنوان یک مقدار بعد یا منبع بعد .
android:left
بعد . افست سمت چپ، به عنوان یک مقدار بعد یا منبع بعد .

همه موارد قابل ترسیم به طور پیش‌فرض برای تناسب با اندازه نمای حاوی مقیاس بندی شده‌اند. بنابراین، قرار دادن تصاویر خود در یک لیست لایه در موقعیت های مختلف ممکن است اندازه نما را افزایش دهد و برخی از تصاویر به اندازه مناسب مقیاس شوند.

برای جلوگیری از مقیاس بندی موارد در لیست، از یک عنصر <bitmap> در عنصر <item> استفاده کنید تا قابل ترسیم را مشخص کنید و گرانش را برای چیزی که مقیاس ندارد، مانند "center" تعریف کنید. برای مثال، <item> زیر آیتمی را تعریف می‌کند که مقیاس آن متناسب با نمای ظرف آن باشد:

<item android:drawable="@drawable/image" />

برای جلوگیری از مقیاس بندی، مثال زیر از عنصر <bitmap> با گرانش متمرکز استفاده می کند:

<item>
  <bitmap android:src="@drawable/image"
          android:gravity="center" />
</item>
مثال:
فایل XML ذخیره شده در res/drawable/layers.xml :
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
      <bitmap android:src="@drawable/android_red"
        android:gravity="center" />
    </item>
    <item android:top="10dp" android:left="10dp">
      <bitmap android:src="@drawable/android_green"
        android:gravity="center" />
    </item>
    <item android:top="20dp" android:left="20dp">
      <bitmap android:src="@drawable/android_blue"
        android:gravity="center" />
    </item>
</layer-list>

این مثال از یک عنصر <bitmap> تودرتو برای تعریف منبع قابل ترسیم برای هر آیتم با گرانش "center" استفاده می کند. این تضمین می کند که هیچ یک از تصاویر به دلیل تغییر اندازه ناشی از تصاویر افست، مقیاس بندی نشده اند تا متناسب با اندازه ظرف باشد.

این طرح‌بندی XML، قابل ترسیم را روی یک view اعمال می‌کند:

<ImageView
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:src="@drawable/layers" />

نتیجه مجموعه ای از تصاویر است که به طور فزاینده ای آفست می شوند:

همچنین ببینید:

فهرست ایالتی

StateListDrawable یک شی قابل ترسیم تعریف شده در XML است که بسته به وضعیت شی از چندین تصویر برای نمایش یک گرافیک مشابه استفاده می کند. به عنوان مثال، وضعیت یک ویجت Button را می توان روی آن ضربه زد، فوکوس کرد یا هیچکدام. با استفاده از فهرست حالت قابل ترسیم، می توانید یک تصویر پس زمینه متفاوت برای هر ایالت ارائه دهید.

شما لیست وضعیت را در یک فایل XML توصیف می کنید. هر گرافیک با یک عنصر <item> در داخل یک عنصر <selector> نمایش داده می شود. هر <item> از ویژگی های مختلفی برای توصیف وضعیتی که در آن به عنوان گرافیک برای ترسیم استفاده می شود، استفاده می کند.

در طول هر تغییر حالت، لیست حالت از بالا به پایین پیمایش می شود و اولین موردی که با وضعیت فعلی مطابقت دارد استفاده می شود. انتخاب بر اساس "بهترین تطابق" نیست ، بلکه اولین موردی است که حداقل معیارهای ایالت را برآورده می کند.

محل فایل:
res/drawable/ filename .xml
نام فایل شناسه منبع است
نوع داده منبع کامپایل شده:
اشاره گر منبع به StateListDrawable
مرجع منبع:
در جاوا: R.drawable. filename
در XML: @[ package :]drawable/ filename
نحو:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
    android:constantSize=["true" | "false"]
    android:dither=["true" | "false"]
    android:variablePadding=["true" | "false"] >
    <item
        android:drawable="@[package:]drawable/drawable_resource"
        android:state_pressed=["true" | "false"]
        android:state_focused=["true" | "false"]
        android:state_hovered=["true" | "false"]
        android:state_selected=["true" | "false"]
        android:state_checkable=["true" | "false"]
        android:state_checked=["true" | "false"]
        android:state_enabled=["true" | "false"]
        android:state_activated=["true" | "false"]
        android:state_window_focused=["true" | "false"] />
</selector>
عناصر:
<selector>
مورد نیاز. این باید عنصر ریشه باشد. حاوی یک یا چند عنصر <item> است.

ویژگی ها:

xmlns:android
رشته . مورد نیاز. فضای نام XML را تعریف می کند که باید "http://schemas.android.com/apk/res/android" باشد.
android:constantSize
بولی . درست است اگر اندازه داخلی گزارش شده قرعه کشی با تغییر حالت ثابت بماند (اندازه حداکثر همه حالت ها است). اگر اندازه بر اساس وضعیت فعلی متفاوت باشد، false است. پیش فرض نادرست است.
android:dither
بولی . اگر بیت مپ پیکربندی پیکسلی مشابهی با صفحه نمایش ندارد، مانند یک بیت مپ ARGB 8888 در صفحه RGB 565، برای فعال کردن تداخل در نقشه بیت درست است. false برای غیرفعال کردن dithering. پیش فرض درست است.
android:variablePadding
بولی . درست است اگر بالشتک ترسیمی بر اساس وضعیت فعلی انتخاب شده تغییر کند. false اگر بالشتک باید ثابت بماند، بر اساس حداکثر padding همه حالت ها. فعال کردن این ویژگی مستلزم آن است که هنگام تغییر وضعیت، با اجرای طرح‌بندی سروکار داشته باشید، که اغلب پشتیبانی نمی‌شود. پیش فرض نادرست است.
<item>
یک قابل ترسیم را برای استفاده در حالت های خاص تعریف می کند، همانطور که با ویژگی های آن توضیح داده شده است. باید فرزند عنصر <selector> باشد.

ویژگی ها:

android:drawable
منبع قابل ترسیم مورد نیاز . ارجاع به یک منبع قابل ترسیم
android:state_pressed
بولی . درست است اگر از این مورد در هنگام ضربه زدن به شی استفاده شود، مانند زمانی که دکمه ای لمس می شود. اگر این مورد در حالت پیش‌فرض و بدون ضربه زدن استفاده شود، false است.
android:state_focused
بولی . درست است اگر این مورد زمانی استفاده شود که شیء دارای فوکوس ورودی است، مانند زمانی که کاربر ورودی متنی را انتخاب می کند. اگر این مورد در حالت پیش‌فرض و غیر متمرکز استفاده شود، false است.
android:state_hovered
بولی . درست است اگر این مورد زمانی که مکان نما روی شیء قرار می گیرد استفاده شود. false اگر این مورد در حالت پیش‌فرض و بدون شناور استفاده شود. اغلب، این قابل ترسیم می‌تواند همان قابل ترسیمی باشد که برای حالت «تمرکز» استفاده می‌شود.

در سطح 14 API معرفی شده است.

android:state_selected
بولی . درست است اگر در هنگام پیمایش با یک کنترل جهت‌دار، از این مورد زمانی که شی مورد نظر کاربر فعلی است، استفاده می‌شود، مانند هنگام پیمایش در فهرست با D-pad. اگر این مورد زمانی که شی انتخاب نشده است استفاده شود false است.

حالت انتخاب شده زمانی استفاده می‌شود که android:state_focused کافی نباشد، مانند زمانی که نمای فهرست فوکوس داشته باشد و یک مورد درون آن با D-pad انتخاب شود.

android:state_checkable
بولی . درست است اگر این مورد زمانی که شی قابل انتخاب باشد استفاده شود. اگر این مورد در زمانی که شی قابل انتخاب نیست استفاده شود false است. فقط زمانی مفید است که شی بتواند بین یک ویجت قابل انتخاب و غیر قابل انتخاب جابجا شود.
android:state_checked
بولی . درست است اگر این مورد در هنگام انتخاب شی مورد استفاده قرار گیرد. false اگر زمانی استفاده شود که شی مورد نظر انتخاب نشده باشد.
android:state_enabled
بولی . درست است اگر این مورد در هنگام فعال بودن شی مورد استفاده قرار گیرد، به این معنی که می تواند رویدادهای لمس یا کلیک را دریافت کند. false اگر زمانی که شی غیرفعال است استفاده شود.
android:state_activated
بولی . درست است اگر زمانی که شی به عنوان انتخاب دائمی فعال می شود، از این مورد استفاده می شود، مثلاً برای «برجسته کردن» مورد فهرست انتخاب شده قبلی در نمای پیمایش مداوم. اگر شیء فعال نشده باشد، از آن استفاده شود false است.

در سطح 11 API معرفی شده است.

android:state_window_focused
بولی . درست است اگر این مورد زمانی استفاده شود که پنجره برنامه فوکوس داشته باشد، به این معنی که برنامه در پیش زمینه است. اگر از این مورد زمانی استفاده شود که پنجره برنامه فوکوس ندارد، برای مثال، اگر سایه اعلان پایین کشیده شود یا یک گفتگو ظاهر شود، false است.

توجه: اندروید اولین مورد را در لیست وضعیت اعمال می کند که با وضعیت فعلی شی مطابقت دارد. بنابراین، اگر اولین مورد در لیست هیچ یک از ویژگی های حالت قبلی را نداشته باشد، هر بار اعمال می شود. به همین دلیل است که می خواهید مقدار پیش فرض شما همیشه آخرین باشد، همانطور که در مثال زیر نشان داده شده است.

مثال:
فایل XML ذخیره شده در res/drawable/button.xml :
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
          android:drawable="@drawable/button_pressed" /> <!-- pressed -->
    <item android:state_focused="true"
          android:drawable="@drawable/button_focused" /> <!-- focused -->
    <item android:state_hovered="true"
          android:drawable="@drawable/button_focused" /> <!-- hovered -->
    <item android:drawable="@drawable/button_normal" /> <!-- default -->
</selector>

این طرح XML لیست حالت قابل ترسیم را روی یک دکمه اعمال می کند:

<Button
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:background="@drawable/button" />
همچنین ببینید:

لیست سطح

قابل ترسیمی که تعدادی از قابل ترسیم‌های جایگزین را مدیریت می‌کند که به هر کدام یک مقدار عددی حداکثر اختصاص داده شده است. تنظیم مقدار سطح drawable با setLevel() منبع قابل ترسیم را در لیست سطح بارگذاری می کند که دارای مقدار android:maxLevel بزرگتر یا مساوی با مقدار ارسال شده به متد است.

محل فایل:
res/drawable/ filename .xml
نام فایل شناسه منبع است
نوع داده منبع کامپایل شده:
اشاره گر منبع به یک LevelListDrawable
مرجع منبع:
در جاوا: R.drawable. filename
در XML: @[ package :]drawable/ filename
نحو:
<?xml version="1.0" encoding="utf-8"?>
<level-list
    xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:drawable="@drawable/drawable_resource"
        android:maxLevel="integer"
        android:minLevel="integer" />
</level-list>
عناصر:
<level-list>
مورد نیاز. این باید عنصر ریشه باشد. حاوی یک یا چند عنصر <item> است.

ویژگی ها:

xmlns:android
رشته . مورد نیاز. فضای نام XML را تعریف می کند که باید "http://schemas.android.com/apk/res/android" باشد.
<item>
قابل ترسیم را برای استفاده در سطح معینی تعریف می کند.

ویژگی ها:

android:drawable
منبع قابل ترسیم مورد نیاز . ارجاع به منبع قابل ترسیمی که باید درج شود.
android:maxLevel
عدد صحیح حداکثر سطح مجاز برای این مورد.
android:minLevel
عدد صحیح حداقل سطح مجاز برای این مورد.
مثال:
<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:drawable="@drawable/status_off"
        android:maxLevel="0" />
    <item
        android:drawable="@drawable/status_on"
        android:maxLevel="1" />
</level-list>

هنگامی که این روی یک View اعمال می شود، سطح را می توان با setLevel() یا setImageLevel() تغییر داد.

همچنین ببینید:

انتقال قابل ترسیم

TransitionDrawable یک شی قابل ترسیم است که می تواند بین دو منبع قابل ترسیم دیگر محو شود.

هر قابل ترسیم با یک عنصر <item> در داخل یک عنصر <transition> نشان داده می شود. بیش از دو مورد پشتیبانی نمی شود. برای انتقال به جلو، startTransition() را فراخوانی کنید. برای انتقال به عقب، reverseTransition() را فراخوانی کنید.

محل فایل:
res/drawable/ filename .xml
نام فایل شناسه منبع است
نوع داده منبع کامپایل شده:
اشاره گر منبع به TransitionDrawable
مرجع منبع:
در جاوا: R.drawable. filename
در XML: @[ package :]drawable/ filename
نحو:
<?xml version="1.0" encoding="utf-8"?>
<transition
xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:drawable="@[package:]drawable/drawable_resource"
        android:id="@[+][package:]id/resource_name"
        android:top="dimension"
        android:right="dimension"
        android:bottom="dimension"
        android:left="dimension" />
</transition>
عناصر:
<transition>
مورد نیاز. این باید عنصر ریشه باشد. حاوی یک یا چند عنصر <item> است.

ویژگی ها:

xmlns:android
رشته . مورد نیاز. فضای نام XML را تعریف می کند که باید "http://schemas.android.com/apk/res/android" باشد.
<item>
یک قابل ترسیم را برای استفاده به عنوان بخشی از انتقال قابل ترسیم تعریف می کند. باید فرزند عنصر <transition> باشد. عناصر <bitmap> فرزند را می پذیرد.

ویژگی ها:

android:drawable
منبع قابل ترسیم مورد نیاز . ارجاع به یک منبع قابل ترسیم
android:id
شناسه منبع یک شناسه منبع منحصر به فرد برای این قابل ترسیم. برای ایجاد یک شناسه منبع جدید برای این مورد، از فرم "@+id/ name " استفاده کنید. علامت مثبت نشان می دهد که این به عنوان یک شناسه جدید ایجاد شده است. شما می توانید از این شناسه برای بازیابی و اصلاح نقشه کشی با View.findViewById() یا Activity.findViewById() استفاده کنید.
android:top
عدد صحیح افست بالا در پیکسل.