المورد القابل للرسم هو مفهوم عام لرسم يمكن رسمه على الشاشة
التي يمكنك استردادها باستخدام واجهات برمجة التطبيقات مثل getDrawable(int)
أو تطبيق
إلى مورد XML آخر يتضمّن سمات مثل android:drawable
وandroid:icon
.
وتتوفّر أنواع عديدة من العناصر القابلة للرسم:
- ملف Bitmap
- ملف رسم صورة نقطية (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 لونًا إلى تنسيق 8 بت
PNG مع لوحة ألوان. وينتج عن ذلك صورة بجودة متساوية تتطلب قدرًا أقل من
الذاكرة.
لذا، يجب الانتباه إلى أنّ برامج الصور الثنائية الموضوعة في هذا الدليل يمكن أن تتغير أثناء عملية الإنشاء. في حال حذف
تخطط لقراءة صورة كمجموعة بث بت لتحويلها إلى صورة نقطية، ثم وضع صورك
المجلد 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>
بداخله
يعرّف العنصر القابل للرسم.
- مكان الملف:
- اسم الملف هو رقم تعريف المورد
- نوع بيانات الموارد المجمّعة:
- مؤشر المورد إلى
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" />
- راجِع أيضًا:
res/drawable/filename.xml
تسع رقعة
NinePatch
هي صورة PNG يمكنك من خلالها تحديد مناطق قابلة للتمديد.
يعمل Android على ضبط مقياس عندما يتجاوز المحتوى داخل العرض حدود الصورة العادية. إِنْتَ
عادةً ما يعيّنون هذا النوع من الصور كخلفية لملف شخصي يشتمل على مجموعة أبعاد واحدة على الأقل
إلى "wrap_content"
.
عندما يكبر العرض لاستيعاب المحتوى، تظهر الصورة المكونة من تسعة أجزاء
يتم أيضًا تحجيمه لمطابقة حجم العرض. من أمثلة استخدام صورة مكونة من تسعة أجزاء
الخلفية التي يستخدمها تطبيق Button
المصغّر العادي في Android، والذي يجب أن يمتد إلى
لاستيعاب النص (أو الصورة) داخل الزر.
وكما هي الحال في الصورة النقطية العادية، يمكنك الرجوع مباشرةً إلى ملف مكوَّن من تسعة أجزاء أو من مورد محدّد بواسطة XML.
لطرح مناقشة كاملة حول كيفية إنشاء ملف مكون من تسعة أجزاء يحتوي على مناطق قابلة للتوسيع، راجِع إنشاء صور نقطية يمكن تغيير حجمها (ملفات تصحيح التسع).
ملف تسعة تصحيح
- مكان الملف:
- اسم الملف هو رقم تعريف المورد
- نوع بيانات الموارد المجمّعة:
- مؤشر المورد إلى
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" />
- راجِع أيضًا:
res/drawable/filename.9.png
تسعة تصحيح بتنسيق XML
تسعة تصحيح XML هو مورد محدد في XML يشير إلى ملف مكوَّن من تسعة أجزاء. ويمكن لـ 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" />
res/drawable/filename.xml
قائمة الطبقات
LayerDrawable
هو كائن قابل للرسم.
يدير مجموعة من العناصر القابلة للرسم الأخرى. يُرسم كل عنصر قابل للرسم في القائمة بترتيب
الحالية. يتم رسم آخر عنصر قابل للرسم في القائمة في الأعلى.
ويتم تمثيل كل عنصر قابل للرسم بعنصر <item>
داخل عنصر <layer-list>
واحد.
- مكان الملف:
- اسم الملف هو رقم تعريف المورد
- نوع بيانات الموارد المجمّعة:
- مؤشر المورد إلى
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" />
والنتيجة هي حزمة من الصور التي تتم إزاحة محتواها بشكل متزايد:
- راجِع أيضًا:
res/drawable/filename.xml
قائمة الولايات
StateListDrawable
هو كائن قابل للرسم ومحدد في XML
يستخدم عدة صور لتمثيل الرسم نفسه، اعتمادًا على حالة
الكائن. على سبيل المثال، يمكن النقر على حالة التطبيق المصغّر Button
أو التركيز عليه
أو لا باستخدام قائمة حالة قابلة للرسم، يمكنك توفير صورة خلفية مختلفة لكل منها
الولاية.
أنت تصف قائمة الحالات في ملف XML. ويمثّل كل رسم عنصر <item>
داخل عنصر <selector>
واحد. كل <item>
تصنيفات مختلفة لوصف الحالة التي يتم استخدامها فيها كرسم بياني
القابل للرسم.
أثناء كل تغيير للحالة، يتم اجتياز قائمة الحالة من أعلى إلى أسفل، ويكون العنصر الأول تطابق الحالة الحالية التي يتم استخدامها. لا يعتمد الاختيار على "أفضل تُطابق بل العنصر الأول الذي يفي بالحد الأدنى من معايير الولاية.
- مكان الملف:
- اسم الملف هو رقم تعريف المورد
- نوع بيانات الموارد المجمّعة:
- مؤشر المورد إلى
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" />
- راجِع أيضًا:
res/drawable/filename.xml
قائمة المستويات
عنصر قابل للرسم يدير عددًا من العناصر البديلة القابلة للرسم، يعيّن كل منها حدًّا أقصى لعدد العناصر
يؤدي ضبط قيمة مستوى العنصر القابل للرسم باستخدام setLevel()
إلى تحميل المرجع القابل للرسم في
قائمة مستويات تحتوي على قيمة android:maxLevel
أكبر من أو تساوي
تمريره إلى الطريقة.
- مكان الملف:
- اسم الملف هو رقم تعريف المورد
- نوع بيانات الموارد المجمّعة:
- مؤشر المورد إلى
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()
. - راجِع أيضًا:
res/drawable/filename.xml
إمكانية الرسم الانتقالي
TransitionDrawable
هو كائن قابل للرسم.
قد يتلاشى تدريجيًا بين موردين آخرين قابلين للرسم.
ويتم تمثيل كل عنصر قابل للرسم بعنصر <item>
داخل عنصر <transition>
واحد. لا يُسمح بأكثر من عنصرين. للانتقال إلى الأمام، اتصل
startTransition()
إلى
انتقال للخلف، طلب reverseTransition()
.
- مكان الملف:
- اسم الملف هو رقم تعريف المورد
- نوع بيانات الموارد المجمّعة:
- مؤشر المورد إلى
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); }
- راجِع أيضًا:
res/drawable/filename.xml
مساحة داخلية قابلة للرسم
يشير ذلك المصطلح إلى ملف قابل للرسم يتم تحديده في ملف 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" />
- راجِع أيضًا:
res/drawable/filename.xml
مشبك قابل للرسم
ملف قابل للرسم محدّد في ملف 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، لا يتم اقتصاص الصورة وتكون مرئية بالكامل.
- راجِع أيضًا:
res/drawable/filename.xml
إمكانية رسم المقياس
يشير ذلك المصطلح إلى ملف قابل للرسم يتم تحديده في 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%" />
- راجِع أيضًا:
res/drawable/filename.xml
شكل قابل للرسم
هذا شكل عام محدّد في 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); - راجِع أيضًا:
res/drawable/filename.xml