المورد القابل للرسم هو مفهوم عام لرسم يمكن جذبه إلى الشاشة ويمكنك استرداده باستخدام واجهات برمجة تطبيقات مثل 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"
).
صورة نقطية
صورة نقطية يتيح Android استخدام ملفات الصور النقطية بالتنسيقات التالية: PNG (مفضّلة) وWEBP (مفضّلة، وتتطلب مستوى واجهة برمجة التطبيقات 17 أو أعلى) وJPG (مقبولة) وGIF (غير يُنصح بها).
يمكنك الإشارة إلى ملف صورة نقطية مباشرةً، باستخدام اسم الملف كمعرّف المورد، أو إنشاء معرّف مورد بديل في XML.
ملاحظة: قد يتم تحسين ملفات الصور النقطية تلقائيًا باستخدام ضغط الصور بدون فقدان البيانات باستخدام أداة aapt
أثناء عملية الإنشاء. على سبيل المثال، يمكن تحويل ملف PNG بألوان حقيقية لا يتطلب أكثر من 256 لونًا إلى تنسيق PNG 8 بت مع لوحة ألوان. ينتج عن ذلك صورة ذات جودة متساوية تتطلب ذاكرة أقل.
لذلك، يُرجى العِلم أنّ البرامج الثنائية للصور الموضوعة في هذا الدليل قد تتغير أثناء عملية الإنشاء. وإذا كنت تنوي قراءة صورة كتدفق بت لتحويلها إلى صورة نقطية، ضَع صورك في المجلد res/raw/
بدلاً من ذلك، حيث لا تكون محسّنة.
ملف الصور النقطية
ملف الصورة النقطية هو ملف PNG أو WEBP أو JPG أو GIF. ينشئ نظام Android مورد Drawable
لأي من هذه الملفات عند حفظها في دليل res/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
:Kotlin
val drawable: Drawable? = ResourcesCompat.
getDrawable
(resources, R.drawable.myimage, null)Java
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" />
- راجِع أيضًا:
تسع رقعة
الصورة NinePatch
عبارة عن صورة بتنسيق PNG يمكنك من خلالها تحديد مناطق قابلة للتوسيع والتي يضبطها Android عندما يتخطى المحتوى ضمن العرض حدود الصورة العادية. وعادة ما تحدّد هذا النوع من الصور كخلفية لطريقة العرض التي تم فيها ضبط سمة واحدة على الأقل على "wrap_content"
.
وعندما يكبر العرض لاستيعاب المحتوى، يتم أيضًا تحجيم الصورة المكونة من تسع رقعات لتتناسب مع حجم العرض. ومن الأمثلة على استخدام صورة من تسع رقعات
الخلفية التي تستخدمها أداة Button
القياسية من Android، والتي يجب أن تمتد لتتوافق
مع النص (أو الصورة) داخل الزر.
كما هي الحال مع الصورة النقطية العادية، يمكنك الإشارة إلى ملف مكوَّن من تسع رقعات مباشرةً أو من مورد تم تحديده بتنسيق XML.
لإجراء مناقشة كاملة حول كيفية إنشاء ملف من تسعة لاصقات مع مناطق قابلة للتمديد، راجع إنشاء صور نقطية يمكن تغيير حجمها (ملفات 9 رموز تصحيح).
ملف من تسع رقعات
- موقع الملف:
res/drawable/filename.9.png
اسم الملف هو رقم تعريف المورد- نوع بيانات المورد المجمّع:
- مؤشر المرجع على
NinePatchDrawable
- مرجع للموارد:
-
في لغة Java:
R.drawable.filename
في ملف XML:@[package:]drawable/filename
- مثلا:
- عند حفظ الصورة في
res/drawable/myninepatch.9.png
، يطبِّق تنسيق XML هذا الرقعة التسعة على عرض:<Button android:layout_height="wrap_content" android:layout_width="wrap_content" android:background="@drawable/myninepatch" />
- راجِع أيضًا:
XML تسعة لاصقات
ملف XML المكوَّن من تسعة هو مورد محدد في XML يشير إلى ملف من تسع بات. يستطيع 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
هو كائن قابل للرسم
يدير مجموعة من العناصر القابلة للرسم الأخرى. ويتم رسم كل عنصر قابل للرسم في القائمة بترتيب القائمة. يتم رسم آخر عنصر قابل للرسم في القائمة في الأعلى.
ويتم تمثيل كل قابل للرسم بعنصر <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 هذا القابل للرسم على طريقة عرض:
<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
- مرجع للموارد:
-
في لغة 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" />
- راجِع أيضًا:
قائمة المستويات
يشير هذا المصطلح إلى عنصر قابل للرسم يدير عددًا من العناصر البديلة القابلة للرسم، ويتم تخصيص قيمة عددية لكل منها كحدٍ أقصى. يؤدي ضبط قيمة مستوى العنصر القابل للرسم باستخدام 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
كائنًا قابلاً للرسم ويمكن أن
يتلاشى بين موردَين آخرَين قابلَين للرسم.
ويتم تمثيل كل قابل للرسم بعنصر <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 هذا القابل للرسم على طريقة عرض:
<ImageButton android:id="@+id/button" android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/transition" />
وينفذ الرمز التالي انتقالاً بمقدار 500 ملي ثانية من العنصر الأول إلى العنصر الثاني:
Kotlin
val button: ImageButton = findViewById(R.id.button) val drawable: Drawable = button.drawable if (drawable is TransitionDrawable) { drawable.startTransition(500) }
Java
ImageButton button = (ImageButton) findViewById(R.id.button); Drawable drawable = button.getDrawable(); if (drawable instanceof TransitionDrawable) { ((TransitionDrawable) drawable).startTransition(500); }
- راجِع أيضًا:
مساحة قابلة للرسم
عبارة عن قابلة للرسم معرَّفة في ملف XML وتتضمّن مساحة أخرى قابلة للرسم بمسافة محدّدة. ويكون هذا مفيدًا عندما يحتاج العرض إلى خلفية أصغر من الحدود الفعلية للعرض.
- موقع الملف:
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" />
- راجِع أيضًا:
المقطع قابل للرسم
عبارة عن قابلة للرسم معرَّفة في ملف XML يتم من خلالها اقتصاص مادة قابلة للرسم أخرى بناءً على المستوى الحالي لهذه المادة القابلة للرسم. ويمكنك التحكّم في مدى قصّ الطفل القابل للرسم في العرض والارتفاع بناءً على المستوى، بالإضافة إلى الجاذبية التي تتيح لك التحكّم في مكان وضع الطفل في حاويته الإجمالية. يُستخدم غالبًا لتنفيذ أشياء مثل أشرطة التقدم.
- موقع الملف:
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" />
يصبح الرمز البرمجي التالي قابلاً للرسم ويزيد من عدد القطع للكشف عن الصورة تدريجيًا:
Kotlin
val imageview: ImageView = findViewById(R.id.image) val drawable: Drawable = imageview.background if (drawable is ClipDrawable) { drawable.level = drawable.level + 1000 }
Java
ImageView imageview = (ImageView) findViewById(R.id.image); Drawable drawable = imageview.getBackground(); if (drawable instanceof ClipDrawable) { ((ClipDrawable)drawable).setLevel(drawable.getLevel() + 1000); }
تؤدي زيادة المستوى إلى تقليل مقدار الاقتصاص والكشف عن الصورة ببطء. ها هو عند مستوى 7000:
ملاحظة: المستوى التلقائي هو 0، الذي يتم اقتصاصه بالكامل بحيث لا تكون الصورة مرئية. وعندما يبلغ المستوى 10,000، لا يتم اقتصاص الصورة وتكون مرئية بالكامل.
- راجِع أيضًا:
قابل للرسم على نطاق واسع
هي عبارة عن قابلة للرسم يتم تحديدها في ملف XML، ويتم فيها تغيير حجم مادة عرض أخرى قابلة للرسم بناءً على مستواها الحالي.
- موقع الملف:
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" />
يحصل رمز التطبيق هذا على الشكل القابل للرسم ويطبّقه على طريقة عرض:
Kotlin
val shape: Drawable? =
getDrawable
(resources
, R.drawable.gradient_box,getTheme()
) val tv: TextView = findViewById(R.id.textview) tv.background = shapeJava
Resources res =
getResources()
; Drawable shape = ResourcesCompat.getDrawable
(res, R.drawable.gradient_box,getTheme()
); TextView tv = (TextView)findViewById(R.id.textview); tv.setBackground(shape); - راجِع أيضًا: