منبع ترسیمشدنی مفهومی کلی برای گرافیکی است که میتواند روی صفحه ترسیم شود و
میتوانید آن را با میاناهای برنامهسازی کاربردی مانند getDrawable(int) بازیابی کنید یا
با مشخصههایی مانند android:drawable و android:icon در منبع XML دیگری اعمال کنید.
چندین نوع drawable وجود دارد:
- فایل بیتمپ
- فایل گرافیکی نقشه بیتی (PNG، WEBP، JPG، یا GIF).
BitmapDrawableایجاد میکند. - فایل Nine-patch
- فایل PNG با مناطق قابلکشش برای تغییر اندازه تصاویر براساس محتوا (
.9.png).NinePatchDrawableایجاد میکند. - فهرست لایهها
- یک drawable که آرایهای از drawableهای دیگر را مدیریت میکند. اینها بهترتیب آرایه ترسیم میشوند، بنابراین
عنصر با بزرگترین نمایه در بالا ترسیم میشود.
LayerDrawableایجاد میکند. - فهرست ایالتها
- فایل XML که به گرافیکهای بیتمپ مختلف
برای حالتهای مختلف ارجاع میدهد—برای مثال، برای استفاده از تصویر متفاوت وقتی روی دکمهای تکضرب زده میشود.
StateListDrawableایجاد میکند. - فهرست سطح
- فایل XML که یک drawable را تعریف میکند که تعدادی drawable جایگزین را مدیریت میکند، هرکدام
یک مقدار عددی حداکثر اختصاص داده شده است.
LevelListDrawableایجاد میکند. - Transition drawable
- فایل XML که ترسیمشدنیای را تعریف میکند که میتواند بین دو منبع ترسیمشدنی محو متقاطع شود.
TransitionDrawableایجاد میکند. - Inset drawable
- فایل XML که یک drawable را تعریف میکند که drawable دیگری را با فاصله مشخصی درج میکند. این زمانی مفید است که یک نما به یک پسزمینه قابل ترسیم نیاز دارد که از مرزهای واقعی نما کوچکتر باشد.
- Clip drawable
- فایل XML که یک drawable را تعریف میکند که drawable دیگری را براساس مقدار سطح فعلی این drawable برش میدهد.
ClipDrawableایجاد میکند. - مقیاسبندی قابلترسیم
- فایل XML که یک drawable را تعریف میکند که اندازه drawable دیگری را براساس مقدار سطح فعلی آن تغییر میدهد.
ScaleDrawable ایجاد میکند
- ترسیمپذیر شکل.
- فایل XML که شکل هندسی را تعریف میکند، ازجمله رنگها و گرادیانها.
GradientDrawableایجاد میکند.
برای کسب اطلاعات درباره نحوه
ایجاد AnimationDrawable،
به سند منابع پویانمایی مراجعه کنید.
توجه: از منبع رنگ میتوان بهعنوان
یک drawable در XML نیز استفاده کرد. برای مثال، هنگام ایجاد فهرست وضعیت
قابلترسیم، میتوانید به منبع رنگ برای مشخصه android:drawable (android:drawable="@color/green") ارجاع دهید.
بیتمپ
تصویر بیتمپ. Android از فایلهای بیتمپ در قالبهای زیر پشتیبانی میکند: PNG (ترجیح داده میشود)، WEBP (ترجیح داده میشود، به سطح میانای برنامهسازی کاربردی ۱۷ یا بالاتر نیاز دارد)، JPG (قابلقبول)، GIF (توصیه نمیشود).
میتوانید مستقیماً به فایل نقشه بیتی ارجاع دهید، از نام فایل بهعنوان شناسه منبع استفاده کنید، یا شناسه منبع دگرنام در XML ایجاد کنید.
توجه: فایلهای Bitmap ممکن است بهطور خودکار با فشردهسازی تصویر بدون اتلاف توسط ابزار aapt درطول فرایند ساخت بهینهسازی شوند. برای مثال، یک PNG رنگ واقعی که به بیشاز ۲۵۶ رنگ نیاز ندارد ممکن است به یک PNG ۸ بیتی با پالت رنگ تبدیل شود. این کار باعث میشود تصویری با کیفیت یکسان ایجاد شود که به حافظه کمتری نیاز دارد.
بنابراین، توجه داشته باشید که باینریهای تصویر قرار دادهشده در این دایرکتوری ممکن است درطول ساخت تغییر کنند. اگر
قصد دارید تصویری را بهصورت جریان بیت بخوانید تا آن را به بیتمپ تبدیل کنید، تصاویرتان را در
پوشه res/raw/ قرار دهید که در آنجا بهینهسازی نمیشوند.
فایل بیتمپ
فایل نگاشت بیتی فایلی از نوع PNG، WEBP، JPG، یا GIF است. وقتی این فایلها را در فهرست راهنمای res/drawable/ ذخیره میکنید، Android برای هرکدام از آنها منبع Drawable ایجاد میکند.
- مکان فایل:
res/drawable/filename.png(.png،.webp،.jpg، یا.gif)
نام فایل شناسه منبع است- نوع داده منبع کامپایلشده:
- اشارهگر منبع به
BitmapDrawable - مرجع منبع:
-
در Java:
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 میتواند ویژگیهای بیشتری را برای نقشه بیتی مشخص کند، مثل لرزش و کاشیکاری.
توجه: میتوانید از عنصر <bitmap> بهعنوان فرزند
عنصر <item> استفاده کنید. برای مثال، هنگام ایجاد فهرست وضعیت یا فهرست لایه، میتوانید مشخصه android:drawable را از عنصر <item> مستثنی کنید و <bitmap> را در آن لانه کنید که مورد قابلترسیم را تعریف میکند.
- مکان فایل:
res/drawable/filename.xml
نام فایل شناسه منبع است- نوع داده منبع کامپایلشده:
- اشارهگر منبع به
BitmapDrawable - مرجع منبع:
-
در Java:
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"] />
- عناصر:
- مثال:
-
<?xml version="1.0" encoding="utf-8"?> <bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/icon" android:tileMode="repeat" />
- همچنین ببینید:
Nine-patch
NinePatch یک تصویر PNG است که در آن میتوانید مناطق قابلکشش را تعریف کنید
که Android وقتی محتوای داخل نما از حدود عادی تصویر فراتر میرود، آنها را مقیاسبندی میکند. معمولاً
این نوع تصویر را بهعنوان پسزمینه نمایی اختصاص میدهید که حداقل یک بُعد آن روی
"wrap_content" تنظیم شده باشد.
وقتی نما برای جا دادن محتوا بزرگ میشود، تصویر nine-patch
نیز برای مطابقت با اندازه نما مقیاسبندی میشود. نمونهای از کاربرد تصویر nine-patch، پسزمینه استفادهشده توسط ابزاره استاندارد Button Android است که باید برای جا دادن نوشتار (یا تصویر) داخل دکمه کشیده شود.
همانند بیتمپ معمولی، میتوانید مستقیماً به فایل nine-patch ارجاع دهید یا از منبعی که XML تعریف کرده است.
برای بحث کامل درباره نحوه ایجاد فایل nine-patch با مناطق قابلکشش، به ایجاد نقشه بیتی با اندازه قابلتغییر (فایلهای 9-patch) مراجعه کنید.
فایل Nine-patch
- مکان فایل:
res/drawable/filename.9.png
نام فایل شناسه منبع است- نوع داده منبع کامپایلشده:
- اشارهگر منبع به
NinePatchDrawable - مرجع منبع:
-
در Java:
R.drawable.filename
در XML:@[package:]drawable/filename - مثال:
- با تصویری که در
res/drawable/myninepatch.9.pngذخیره شده است، این XML چیدمان nine-patch را روی یک نما اعمال میکند:<Button android:layout_height="wrap_content" android:layout_width="wrap_content" android:background="@drawable/myninepatch" />
- همچنین ببینید:
XML nine-patch
XML nine-patch منبعی است که در XML تعریف شده است و به فایل nine-patch اشاره میکند. XML میتواند لرزش تصویر را مشخص کند.
- مکان فایل:
res/drawable/filename.xml
نام فایل شناسه منبع است- نوع داده منبع کامپایلشده:
- اشارهگر منبع به
NinePatchDrawable - مرجع منبع:
-
در Java:
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"] />
- عناصر:
- مثال:
-
<?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 شیء قابلترسیمی است
که آرایهای از قابلترسیمهای دیگر را مدیریت میکند. هر drawable در فهرست بهترتیب فهرست ترسیم میشود. آخرین عنصر قابلرسم در فهرست در بالا رسم میشود.
هر drawable با یک عنصر <item> در داخل یک عنصر <layer-list> نشان داده میشود.
- مکان فایل:
res/drawable/filename.xml
نام فایل شناسه منبع است- نوع داده منبع کامپایلشده:
- اشارهگر منبع به
LayerDrawable - مرجع منبع:
-
در Java:
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>
- عناصر:
- مثال:
- فایل 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 چیدمان، drawable را روی نما اعمال میکند:
<ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/layers" />
نتیجه، دستهای از تصاویر با جابهجایی فزاینده است:
- همچنین ببینید:
فهرست ایالتها
StateListDrawable یک شیء قابلرسم است که در XML تعریف شده است
و از چندین تصویر برای نمایش یک گرافیک یکسان استفاده میکند، بسته به وضعیت
شیء. برای مثال، وضعیت ابزاره Button میتواند تکضرب زده، متمرکز، یا هیچکدام باشد؛ بااستفاده از فهرست وضعیت قابلرسم، میتوانید تصویر پسزمینه متفاوتی برای هر وضعیت ارائه دهید.
فهرست وضعیت را در فایل XML شرح میدهید. هر گرافیک با یک عنصر <item> در داخل یک عنصر <selector> نشان داده میشود. هر <item>
از مشخصههای مختلفی برای توصیف حالتی که در آن بهعنوان گرافیک برای
drawable استفاده میشود، استفاده میکند.
درطول هر تغییر وضعیت، فهرست وضعیت از بالا به پایین پیمایش میشود و اولین موردی که با وضعیت فعلی مطابقت دارد استفاده میشود. این انتخاب براساس «بهترین مطابقت» نیست، بلکه اولین موردی است که حداقل معیارهای ایالت را برآورده میکند.
- مکان فایل:
res/drawable/filename.xml
نام فایل شناسه منبع است- نوع داده منبع کامپایلشده:
- اشارهگر منبع به
StateListDrawable - مرجع منبع:
-
در Java:
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>
- عناصر:
- مثال:
- فایل 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 که تعدادی drawable جایگزین را مدیریت میکند، که به هرکدام یک مقدار عددی حداکثر اختصاص داده شده است. تنظیم مقدار سطح ترسیمشدنی با setLevel()، منبع ترسیمشدنی را در فهرست سطح بار میکند که مقدار android:maxLevel آن بزرگتر یا مساوی با مقدار ارسالشده به روش است.
- مکان فایل:
res/drawable/filename.xml
نام فایل شناسه منبع است- نوع داده منبع کامپایلشده:
- اشارهگر منبع به
LevelListDrawable - مرجع منبع:
-
در Java:
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>
- عناصر:
- مثال:
-
<?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 شیء ترسیمشدنیای است
که میتواند بین دو منبع ترسیمشدنی دیگر محو تدریجی متقاطع داشته باشد.
هر drawable با یک عنصر <item> در داخل یک عنصر <transition> نشان داده میشود. بیشاز دو مورد پشتیبانی نمیشود. برای انتقال به جلو، با
startTransition() تماس بگیرید. برای
انتقال به عقب، reverseTransition() را فراخوانی کنید.
- مکان فایل:
res/drawable/filename.xml
نام فایل شناسه منبع است- نوع داده منبع کامپایلشده:
- اشارهگر منبع به
TransitionDrawable - مرجع منبع:
-
در Java:
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>
- عناصر:
- مثال:
- فایل XML در
res/drawable/transition.xmlذخیره شد:<?xml version="1.0" encoding="utf-8"?> <transition xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/on" /> <item android:drawable="@drawable/off" /> </transition>
این XML چیدمان، drawable را روی نما اعمال میکند:
<ImageButton android:id="@+id/button" android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/transition" />
و کد زیر گذار ۵۰۰ میلیثانیهای از مورد اول به مورد دوم را انجام میدهد:
کاتلین
val button: ImageButton = findViewById(R.id.button) val drawable: Drawable = button.drawable if (drawable is TransitionDrawable) { drawable.startTransition(500) }
جاوا
ImageButton button = (ImageButton) findViewById(R.id.button); Drawable drawable = button.getDrawable(); if (drawable instanceof TransitionDrawable) { ((TransitionDrawable) drawable).startTransition(500); }
- همچنین ببینید:
دروننشاندنی قابلرسم
یک drawable تعریفشده در XML که drawable دیگری را با فاصله مشخصی درج میکند. این ویژگی زمانی مفید است که یک نما به پسزمینهای نیاز دارد که از حدود واقعی نما کوچکتر باشد.
- مکان فایل:
res/drawable/filename.xml
نام فایل شناسه منبع است- نوع داده منبع کامپایلشده:
- اشارهگر منبع به
InsetDrawable - مرجع منبع:
-
در Java:
R.drawable.filename
در XML:@[package:]drawable/filename - نحو:
-
<?xml version="1.0" encoding="utf-8"?> <inset xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/drawable_resource" android:insetTop="dimension" android:insetRight="dimension" android:insetBottom="dimension" android:insetLeft="dimension" />
- عناصر:
- مثال:
-
<?xml version="1.0" encoding="utf-8"?> <inset xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/background" android:insetTop="10dp" android:insetLeft="10dp" />
- همچنین ببینید:
Clip drawable
یک drawable تعریفشده در XML که drawable دیگری را براساس سطح فعلی این drawable برش میدهد. میتوانید کنترل کنید که drawable فرزند چقدر در عرض و ارتفاع براساس سطح بریده شود، همچنین میتوانید جاذبه را کنترل کنید تا مشخص شود در کجای محفظه کلی قرار گیرد. اغلب برای پیادهسازی مواردی مثل نوارهای پیشرفت استفاده میشود.
- مکان فایل:
res/drawable/filename.xml
نام فایل شناسه منبع است- نوع داده منبع کامپایلشده:
- اشارهگر منبع به
ClipDrawable - مرجع منبع:
-
در Java:
R.drawable.filename
در XML:@[package:]drawable/filename - نحو:
-
<?xml version="1.0" encoding="utf-8"?> <clip xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/drawable_resource" android:clipOrientation=["horizontal" | "vertical"] android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" | "fill_vertical" | "center_horizontal" | "fill_horizontal" | "center" | "fill" | "clip_vertical" | "clip_horizontal"] />
- عناصر:
- مثال:
- فایل XML در
res/drawable/clip.xmlذخیره شد:<?xml version="1.0" encoding="utf-8"?> <clip xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/android" android:clipOrientation="horizontal" android:gravity="left" />
XML چیدمان زیر، ترسیمپذیر برش را روی نما اعمال میکند:
<ImageView android:id="@+id/image" android:src="@drawable/clip" android:layout_height="wrap_content" android:layout_width="wrap_content" />
کد زیر drawable را دریافت میکند و مقدار برش را افزایش میدهد تا تصویر را بهتدریج آشکار کند:
کاتلین
val imageview: ImageView = findViewById(R.id.image) val drawable: Drawable = imageview.background if (drawable is ClipDrawable) { drawable.level = drawable.level + 1000 }
جاوا
ImageView imageview = (ImageView) findViewById(R.id.image); Drawable drawable = imageview.getBackground(); if (drawable instanceof ClipDrawable) { ((ClipDrawable)drawable).setLevel(drawable.getLevel() + 1000); }
افزایش سطح، میزان برش را کاهش میدهد و بهتدریج تصویر را آشکار میکند. اینجا در سطح ۷۰۰۰ است:
توجه: سطح پیشفرض ۰ است که کاملاً برش داده شده است، بنابراین تصویر قابلمشاهده نیست. وقتی سطح ۱۰٬۰۰۰ باشد، تصویر برش داده نمیشود و کاملاً قابلمشاهده است.
- همچنین ببینید:
ترسیمپذیر مقیاس
یک drawable تعریفشده در XML که اندازه drawable دیگری را براساس سطح فعلی آن تغییر میدهد.
- مکان فایل:
res/drawable/filename.xml
نام فایل شناسه منبع است- نوع داده منبع کامپایلشده:
- اشارهگر منبع به
ScaleDrawable - مرجع منبع:
-
در Java:
R.drawable.filename
در XML:@[package:]drawable/filename - نحو:
-
<?xml version="1.0" encoding="utf-8"?> <scale xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/drawable_resource" android:scaleGravity=["top" | "bottom" | "left" | "right" | "center_vertical" | "fill_vertical" | "center_horizontal" | "fill_horizontal" | "center" | "fill" | "clip_vertical" | "clip_horizontal"] android:scaleHeight="percentage" android:scaleWidth="percentage" />
- عناصر:
- مثال:
-
<?xml version="1.0" encoding="utf-8"?> <scale xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/logo" android:scaleGravity="center_vertical|center_horizontal" android:scaleHeight="80%" android:scaleWidth="80%" />
- همچنین ببینید:
شکل قابلرسم
این شکل عمومی در XML تعریف شده است.
- مکان فایل:
res/drawable/filename.xml
نام فایل شناسه منبع است- نوع داده منبع کامپایلشده:
- اشارهگر منبع به
GradientDrawable - مرجع منبع:
-
در Java:
R.drawable.filename
در XML:@[package:]drawable/filename - نحو:
-
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape=["rectangle" | "oval" | "line" | "ring"] > <corners android:radius="integer" android:topLeftRadius="integer" android:topRightRadius="integer" android:bottomLeftRadius="integer" android:bottomRightRadius="integer" /> <gradient android:angle="integer" android:centerX="float" android:centerY="float" android:centerColor="integer" android:endColor="color" android:gradientRadius="integer" android:startColor="color" android:type=["linear" | "radial" | "sweep"] android:useLevel=["true" | "false"] /> <padding android:left="integer" android:top="integer" android:right="integer" android:bottom="integer" /> <size android:width="integer" android:height="integer" /> <solid android:color="color" /> <stroke android:width="integer" android:color="color" android:dashWidth="integer" android:dashGap="integer" /> </shape>
- عناصر:
- مثال:
- فایل XML در
res/drawable/gradient_box.xmlذخیره شد:<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:startColor="#FFFF0000" android:endColor="#80FF00FF" android:angle="45"/> <padding android:left="7dp" android:top="7dp" android:right="7dp" android:bottom="7dp" /> <corners android:radius="8dp" /> </shape>
این XML چیدمان، شکل قابلرسم را روی نما اعمال میکند:
<TextView android:background="@drawable/gradient_box" android:layout_height="wrap_content" android:layout_width="wrap_content" />
این کد برنامه، شکل قابلرسم را دریافت میکند و آن را روی یک نما اعمال میکند:
کاتلین
val shape: Drawable? =
getDrawable(resources, R.drawable.gradient_box,getTheme()) val tv: TextView = findViewById(R.id.textview) tv.background = shapeجاوا
Resources res =
getResources(); Drawable shape = ResourcesCompat.getDrawable(res, R.drawable.gradient_box,getTheme()); TextView tv = (TextView)findViewById(R.id.textview); tv.setBackground(shape); - همچنین ببینید: