مصادر الرسوميات

الإعلانات

مصادر الرسوميات

 

مصادر الرسوميات

المصدر الرسومي هو مفهوم عام للجرافيك الذي يمكن رسمه على الشاشة والذي يمكنك إستعادته مع واجهات برمجة التطبيقات مثل (getDrawable(int أو تطبيقه على مصدر XML آخر مع سمات مثل android:drawable و android:icon. هناك عدة أنواع مختلفة من الرسوميات:

ملف الصورة النقطية Bitmap File

ملف جرافيك الصورة النقطية (.png, .jpg, or .gif). ينشئ رسوميات صور نقطيه BitmapDrawable.

ملف التسع خانات Nine-Patch File

ملف PNG بأجزاء مطاطية تسمح بتغيير حجم الصورة بناءً على المحتوى (.9.png).
تنشئ NinePatchDrawable.

قائمة الطبقه Layer List

هي رسوميات تدير مصفوفه لرسوميات أخرى. يتم رسمها بنفس ترتيب المصفوفه، بحيث يتم رسم العنصر الذي يحتوي على أكبر فهرس في الأعلى. ينشئ LayerDrawable.

قائمة الحاله State List

هي ملف XML يشير إلى رسوميات نقطية مختلفة لحالات مختلفة (مثال، لإستخدام صورة مختلفة عندما يتم الضغط على زر). تنشئ StateListDrawable.

قائمة المستوى Level List

هو ملف XML يحدد الرسوميه التي تدير عدداً بديلاً من الرسوميات، كل منها يعين قيمة عددية قصوى. ينشئ LevelListDrawable.

الرسوميات الإنتقاليه Transition Drawable

ملف XML يقوم بتعيين رسومية يمكنها التلاشي بين مصدري رسوميات. ينشئ TransitionDrawable.

الرسوميات المدرجه Inset Drawable

ملف XML يقوم بتعيين رسومية تقوم بإدراج رسوم أخرى من خلال مسافة محددة. يفيد ذلك عندما يحتاج العرض إلى خلفية رسومية أصغر من الحدود الفعلية للعرض.

قص الرسوميات Clip Drawable

ملف XML يقوم بتعيين رسوميه تقوم بإقتطاع رسومية أخرى بناءً على قيمة مستوى الرسومية الحالي. ينشئ ClipDrawable.

تحجيم الرسوميات Scale Drawable

ملف XML يقوم بتعيين رسومية تقوم بتغيير الحجم لرسومية أخرى بناءً على قيمة مستواها الحالي. تنشئ ScaleDrawable.

الرسوميات الشكليه Shape Drawable

ملف XML يحدد شكلاً هندسياً، بما في ذلك الألوان و التدرجات. ينشئ GradientDrawable.

راجع أيضاً مستند مصادر الرسوميات المتحركة لمعرفة كيفية إنشاء AnimationDrawable.

ملاحظة: مصدر اللون يمكن إستخدامه أيضاً كمصدر في ملف XML. مثال، عند إنشاء قائمة حاله رسوميه، يمكنك الإشارة إلى مصدر اللون للسمة android:drawable هكذا (android:drawable=”@color/green”).

 

 

مصادر الرسوميات

 

 bitmap


هي صور نقطيه. يدعم نظام الأندرويد ملفات الصور النقطية بثلاثة أشكال: .png (مفضله)، .jpg(مقبوله)، .gif (غير مرغوبه).

يمكنك الإشارة إلى ملفات الصور النقطية مباشرة، بإستخدام اسم الملف كمعرف مصدر، أو عن طريق إنشاء اسم مستعار لمعرف المصدر في XML.

 

ملاحظة: يمكن تقليل حجم الصور النقطية مع الحفاظ على جودتها بإستخدام أداة aapt أثناء عملية الإنشاء. مثال، صورة لون حقيقي PNG و التي لا تتطلب أكثر من 256 لون قد يتم تحويلها إلى صورة PNG 8بت مع لوح ألوان. سيؤدي هذا إلى تكوين صورة ذات جودة مماثلة ولكنها تتطلب مساحة أقل للذاكرة.

لذا يجب الإنتباه إلى أن الصور الثنائية توضع في هذا الدليل الذي يمكن أن يتغير خلال عملية البناء. إذا كنت تخطط لقراءة صورة كتدفق جزئي لتحويلها إلى صورة نقطية، فبدلاً من ذلك ضع صورك في المجلد res/raw/ ، حيث لن يتم تحسينها.

 

 

 

 

مصادر الرسوميات

 

Bitmap file


هو ملف صورة نقطية png, jpg أو ملف gif. ينشئ الأندرويد مصدر رسوميات لأي من هذه الملفات عندما تقوم بحفظهم في الدليل res/drawable/ .

موقع الملف:

(res/drawable/filename.png (.png, .jpg, or .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" />

 

 

مقتطف الكود التالي يقوم بإسترداد صورة على هيئة رسوميه:

      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 bitmap


هي مصدر معرف في ملف 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

تمثل بالمتغير منطقي. تقوم بتعطيل أو تمكين الحواف.

سمة 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

تمثل بالمتغير منطقي. تقوم بتعطيل أو تمكين تلميح المظهر السطحي النقطي. راجع ()setHasMipMap لمزيد من المعلومات. القيمة الإفتراضية لها هي "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


التسع خانات هي صورة PNG، حيث يمكنك تحديد مناطق للمط، يمكن للأندرويد موازنتها عندما يتجاوز المحتوى بداخل المعاينه حدود الصورة العادية.

عادة ما تقوم بتعيين هذا النوع من الصور، كخلفية للمعاينة التي تحتوي على بعد واحد على الأقل، ليتم تعيينه على “wrap_content”.

وعندما تزداد المعاينة لإستيعاب المحتوى، يتم أيضاً قياس صورة التسع خانات لتطابق حجم المعاينه. مثال على إستخدام صورة (Nine-Patch) هو الخلفية التي يستخدمها زر الأندرويد القياسي، لواجهة عنصر التحكم القياسي، والتي يجب أن تتمدد لإستيعاب النص (أو الصورة) بداخل الزر.

تماماً مثل الصورة النقطية العاديه، يمكنك الإشارة إلى ملف Nine-Patch مباشرة أو من خلال مصدر معرف بواسطة XML.

للمناقشة الكاملة، حول كيفية إنشاء ملف التسع خانات بمناطق قابلة للتمدد، راجع مستند الجرافيك ثنائية الأبعاد.

 

 

 

مصادر الرسوميات

 

Nine-patch file


موقع الملف:

res/drawable/filename.9.png
يستخدم اسم الملف كمعرف للمصدر

جمع أنواع بيانات المصادر:

تشير المصادر إلى NinePatchDrawable.

الإشارة للمصدر:

في ملف الجافا: 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.

الإشارة للمصدر:

في ملف الجافا: 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>

يحدد مصدر Nine-Patch وخصائصه.

السمات:

سمة xmlns:android

تمثل بالمتغير سلسله. مطلوبه. تحدد نطاق XML والذي يجب أن يكون:
"http://schemas.android.com/apk/res/android"

سمة android:src

مصدر رسوميات. مطلوبه. تشير إلى ملف Nine-Patch.

سمة 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>

يحدد رسوميات ليتم وضعها في طبقة الرسوميات، في موضع تم تعيينه بواسطة خصائصه. يجب أن يكون تابع للعنصر <selector>. ويقبل عناصر <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> لتعريف المصدر الرسومي لكل عنصر “بجاذبية مركزية”.

يضمن هذا ألا يتم إعادة قياس أي من الصور لتتناسب مع حجم الحاوية، بسبب تغيير الحجم الذي تسببه إزاحة الصور.

يقوم XML هذا بتطبيق الرسوميات على المعاينه:
<ImageView
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:src="@drawable/layers" />

 

والنتيجة هي مجموعة من الصور متزايدة الإزاحة:

راجع أيضاً:
رسوميات الطبقات LayerDrawable.

 

 

 

 

 

مصادر الرسوميات

 

قائمة الحاله


رسوميات قائمة الحاله StateListDrawable هي كائن رسومي معرف في XML الذي يستخدم عدة صور مختلفة لتمثيل نفس الجرافيك، وفقاً لحالة الكائن.

على سبيل المثال، زر واجهة تحكم يمكن أن يوجد في إحدى الحالات المختلفة (الضغط، التركيز، أو لاشيء منهما). أو بإستخدام حالة قائمه رسوميه، يمكنك توفير صورة خلفية مختلفه لكل حالة.

يمكنك وصف قائمة الحاله في ملف 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

تمثل بالمتغير منطقي. يأخذ القيمة “true” إذا بقي الحجم الداخلي المعلن للرسوميات ثابتاً بينما تتغير الحاله (الحجم هو الحد الأقصى لجميع الحالات).

ويأخذ القيمة “false” إذا تفاوت الحجم بناءً على الحالة الحاليه. القيمة الإفتراضية هي “false”.

سمة android:dither

تمثل بالمتغير منطقي. يأخذ القيمة “true” لتمكين وضوح الصورة النقطية إذا لم تكن تحتوي على نفس تكوينات البكسل كما هي للشاشة.

(مثال، صورة نقطية بنظام الألوان ARGB 8888 مع شاشة بنظام الألوان RGB 565)؛ ويأخذ القيمة “false” لتعطيل الوضوح. القيمة الإفتراضية هي “true”.

سمة android:variablePadding

تمثل بالمتغير منطقي. يأخذ القيمة “true” إذا كانت حواشي الرسوميه يجب أن تتغير بناءً على الحالة الحاليه المحددة.

ويأخذ القيمة “false” إذا كان يجب أن تبقى الحواشي كما هي (بناءً على الحد الأقصى للحواشي لكافة الحالات).

يتطلب تمكين هذه الميزة أن تتعامل مع أداء المخطط عند تغير الحاله، و هو غير مدعوم غالباً. القيمة الإفتراضية هي ” false”.

عنصر <item>

يحدد رسوميه لإستخدامها أثناء حالات معينه، كما هو موضح في سماتها. يجب أن يكون تابع لعنصر <selector>.

السمات:
سمة android:drawable

مصدر رسوميات. مطلوبه. يشير إلى مصدر رسوميات.

سمة android:state_pressed

تمثل بالمتغير منطقي. تأخذ القيمة “true” إذا كان يجب إستخدام هذا العنصر عند الضغط على الكائن (مثل، عندما يتم لمس/النقر على زر).

وتأخذ القيمة “false” إذا كان يجب إستخدام هذا العنصر في الحالة الإفتراضية، غير مضغوط.

سمة android:state_focused

تمثل بالمتغير منطقي. يأخذ القيمة “true” إذا كان يجب إستخدام هذا العنصر عندما يكون الكائن به تركيز من أجل ادخال البيانات (مثل، عندما يحدد المستخدم مربع إدخال النص).

ويأخذ القيمة “false” إذا كان يجب إستخدام هذا العنصر في الحالة الإفتراضية الغير مركزة.

سمة android:state_hovered

تمثل بالمتغير منطقي. يأخذ القيمة “true” إذا كان يجب إستخدام هذا العنصر عندما يتم أرجحة الكائن بواسطة المؤشر.

ويأخذ القيمة “false” إذا كان يجب إستخدام هذا العنصر في الحالة الإفتراضية الغير مؤرجحة.

غالباً، تكون هذه الرسومية هي نفس الرسومية المستخدمة في الحالة المركزة.

سمات مقدمه في المستوى API 14

سمة android:state_selected

تمثل بالمتغير منطقي. يأخذ القيمة “true” إذا كان يجب إستخدام هذا العنصر عندما يكون الكائن هو الإختيار الحالي للمستخدم عند التنقل بإستخدام أسهم الإتجاهات (مثل، عند التنقل خلال القائمة بإستخدام جهاز التحكم “دي باد”).

ويأخذ القيمة “false” إذا كان يجب إستخدام هذا العنصر عندما لا يتم إختيار الكائن.

حالة الإختيار تستخدم عندما لا يكون التركيز (android:state_focused) كافياً (مثال، عندما تكون قائمة المعاينة مركزة وتم تحديد عنصر بداخلها بإستخدام “دي باد”).

سمة android:state_checkable

تمثل بالمتغير منطقي. يأخذ القيمة “true” إذا كان يجب إستخدام هذا العنصر عندما يكون الكائن قابلاً للتحديد.

و يأخذ القيمة “false” إذا كان يجب إستخدام هذا العنصر عندما يكون الكائن غير قابل للتحديد. (مفيد فقط في حالة كان الكائن يمكنه الإنتقال بين عنصري التحكم “قابل للتحديد/ غير قابل للتحديد”).

سمة android:state_checked

تمثل بالمتغير منطقي. يأخذ القيمة “true” إذا كان يجب إستخدام هذا العنصر عند تحديد الكائن.

و يأخذ القيمة “false” إذا كان يجب إستخدامه عندما يكون الكائن غير محدد.

سمة android:state_enabled

تمثل بالمتغير منطقي. يأخذ القيمة “true” إذا كان يجب إستخدام هذا العنصر عند تمكين الكائن (قادر على تلقي أحدث اللمس/ النقر).

و يأخذ القيمة “false” إذا كان يجب إستخدامه عند تعطيل الكائن.

سمة android:state_activated

تمثل بالمتغير منطقي. يأخذ القيمة “true” إذا كان يجب إستخدام هذا العنصر عندما يكون الكائن نشطاً كإختيار مستمر (مثل، “تظليل” أو “تمييز” عنصر القائمة المحدد مسبقاً في معاينة التنقل المستمر).

و يأخذ القيمة “false” إذا كان يجب إستخدامه عندما يكون الكائن غير نشط.

سمات مقدمة في المستوى API 11

سمة android:state_window_focused

تمثل بالمتغير منطقي. يأخذ القيمة “true” إذا كان يجب إستخدام هذا العنصر عند تركيز نافذة التطبيق (يكون التطبيق في المقدمة).

و يأخذ القيمة “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" />

 

راجع أيضاً:

رسوميات قائمة الحاله.

 

 

 

 

 

مصادر الرسوميات

 

قائمة المستوى


هي رسوميات تدير عدداً من الرسوميات البديله، كل منها تم تعيينه على قيمة عددية قصوى.

ضبط قيمة مستوى الرسوميات بإستخدام ()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>

 

 

بمجرد تطبيق هذا على معاينه، يمكن تغيير المستوى بإستخدام ()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

تمثل بالمتغير عدد صحيح. الإزاحة العليا بالبكسل.

سمة android:right

تمثل بالمتغير عدد صحيح. الإزاحة اليمنى بالبكسل.

سمة android:bottom

تمثل بالمتغير عدد صحيح. الإزاحة السفلى بالبكسل.

سمة android:left

تمثل بالمتغير عدد صحيح. الإزاحة اليسرى بالبكسل.

مثال:

ملف 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.

الإشارة للمصدر:

في ملف الجافا: 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" />

 

 

العناصر:
العنصر <inset>

يحدد رسوميات إدراج. يجب أن يكون هذا العنصر الأساسي.

السمات:

سمة xmlns:android

يمثل بالمتغير سلسله. مطلوب. يحدد نطاق XML الذي يجب أن يكون:
"http://schemas.android.com/apk/res/android".

سمة android:drawable

مصدر رسوميات. مطلوب. يشير إلى مصدر رسوميات ليتم إدراجها.

سمة android:insetTop

الأبعاد. الإدراج العلوي. كقيمة بعد أو مصدر للبعد.

سمة android:insetRight

الأبعاد. الإدراج الأيمن. كقيمة بعد أو مصدر للبعد.

سمة android:insetBottom

الأبعاد. الإدراج الأسفل. كقيمة بعد أو مصدر للبعد.

سمة android:insetLeft

الأبعاد. الإدراج الأيسر. كقيمة بعد أو مصدر للبعد.

مثال:
<?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.

الإشارة للمصدر:

في ملف الجافا: 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"] />

 

 

العناصر:
العنصر <clip>

يحدد قصاصة الرسوميه. يجب أن يكون العنصر الأساسي.

السمات:

سمة xmlns:android

يمثل بالمتغير سلسله. مطلوب. يحدد نطاق XML الذي يجب أن يكون:
"http://schemas.android.com/apk/res/android".

سمة android:drawable

مصدر رسوميات. مطلوب. يشير إلى مصدر رسومي ليتم إقتصاصه.

سمة android:clipOrientation

كلمة رئيسيه. إتجاه الإقتصاص.

يجب أن يكون واحد من القيم الثابته التاليه:

القيمه  الوصف
 أفقي horizontal  تقوم بإقتصاص الرسوميه بشكلٍ أفقي
 رأسي vertical  تقوم بإقتصاص الرسوميه بشكلٍ رأسي

 

سمة android:gravity

كلمة رئيسيه. تحدد مكان إقتصاص الرسوميه.

يجب أن تكون واحده أو أكثر من القيم الثابته التاليه (يفصل بينها بالرمز ‘|’):

 القيمه  الوصف
 top أعلى تضع الكائن في أعلى حاويته، ولا تغير حجمه. عندما يكون إتجاه الإقتصاص clipOrientation، “رأسي” يحدث الإقتصاص في الجزء السفلي للرسوميه.
 bottom أسفل تضع الكائن في أسفل حاويته، ولا تغير حجمه. عندما يكون إتجاه الإقتصاص clipOrientation، “رأسي” يحدث الإقتصاص في الجزء العلوي للرسوميه.
 left يسار تضع الكائن في الحافة اليسرى لحاويته، ولا تغير حجمه.

هذه هي القيمة الإفتراضية. عندما يكون إتجاه الإقتصاص clipOrientation، “أفقي” يحدث الإقتصاص في الجانب الأيمن للرسوميه. هذه هي القيمة الإفتراضية.

 right يمين

تضع الكائن في الحافة اليمنى لحاويته، ولا تغير حجمه.

عندما يكون إتجاه الإقتصاص clipOrientation، “أفقي” يحدث الإقتصاص في الجانب الأيسر للرسوميه.

 center_vertical رأسي في المنتصف  تضع الكائن في المركز الرأسي لحاويته، ولا تغير حجمه.

يتصرف الإقتصاص تماماًَ مثلما يحدث عندما تكون قيمة الجاذبية “المنتصف”.

 fill_vertical رأسي إمتلاء  تقوم بزيادة الحجم الرأسي للكائن عند الحاجة، لكي يملأ حاويته تماماً. 

عندما يكون إتجاه الإقتصاص clipOrientation، “رأسي” لا يحدث إقتصاص، لأن الرسوميه تملأ المساحه الرأسيه. (مالم يكن مستوى الرسوميه “0”، وفي هذه الحاله لا تكون مرئيه)

 center_horizontal أفقي في المنتصف  تضع الكائن في المركز الأفقي لحاويته، ولا تغير حجمه.

يتصرف الإقتصاص تماماًَ مثلما يحدث عندما تكون قيمة الجاذبية “المنتصف”.

 fill_horizontal أفقي إمتلاء

 تقوم بزيادة الحجم الأفقي للكائن عند الحاجة، لكي يملأ حاويته تماماً. 

عندما يكون إتجاه الإقتصاص clipOrientation، “أفقي” لا يحدث إقتصاص، لأن الرسوميه تملأ المساحه الأفقيه. (مالم يكن مستوى الرسوميه “0”، وفي هذه الحاله لا تكون مرئيه)

 center المنتصف تضع الكائن في منتصف حاويته، لكلٍ من المحورين الرأسي والأفقي، ولا تغير حجمه.

عندما يكون إتجاه الإقتصاص clipOrientation، “أفقي” يحدث الإقتصاص في اليمين واليسار.

عندما يكون إتجاه الإقتصاص clipOrientation، “رأسي” يحدث الإقتصاص في الأعلى والأسفل.

 fill ملء تقوم بزيادة الحجم الأفقي والرأسي للكائن، عند الحاجه لكي يملأ حاويته تماماً.

لا يحدث إقتصاص، لأن الرسوميه تملأ المساحة الأفقيه والرأسيه (مالم يكن مستوى الرسوميه “0”، وفي هذه الحاله لا تكون مرئيه)

 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:background="@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.

الإشارة للمصدر:

في ملف الجافا: 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" />

 

 

العناصر:
العنصر <scale>

يحدد مقياس الرسوميات. يجب أن يكون هذا العنصر الرئيسي.

السمات:

سمة xmlns:android

يمثل بالمتغير سلسله. مطلوبه. يحدد نطاق XML الذي يجب أن يكون:
"http://schemas.android.com/apk/res/android".

سمة android:drawable

مصدر رسومي. مطلوبه. يشير إلى مصدر رسوميات.

سمة android:scaleGravity

كلمة مفتاحية. تحدد موضع الجاذبية بعد القياس.

يجب أن تكون واحده أو أكثر من القيم الثابته التاليه (يفصل بينها بالرمز ‘|’):

جدول سمة مقياس الجاذبيه
القيمة الوصف
 top أعلى  تضع الكائن في أعلى حاويته، ولا تغير حجمه.
 bottom أسفل  تضع الكائن في أسفل حاويته، ولا تغير حجمه.
 left يسار

 تضع الكائن في الحافة اليسرى لحاويته، ولا تغير حجمه.

هذه هي القيمة الإفتراضيه.

 right يمين

 تضع الكائن في الحافة اليمنى لحاويته، ولا تغير حجمه.

 center_vertical رأسي في المنتصف  تضع الكائن في المنتصف الرأسي لحاويته، ولا تغير حجمه.
 fill_vertical رأسي إمتلاء  تزيد الحجم الرأسي للكائن عند الحاجه، لكي يملأ حاويته تماماً.
 center_horizontal أفقي في المنتصف  تضع الكائن في المنتصف الأفقي لحاويته، ولا تغير حجمه.
 fill_horizontal أفقي إمتلاء  تزيد الحجم الأفقي للكائن عند الحاجه، لكي يملأ حاويته تماماً.
 center منتصف  تضع الكائن في منتصف حاويته، لكلٍ من المحورين الرأسي والأفقي، ولا تغير حجمه.
 fill إمتلاء  تزيد الحجم الأفقي والرأسي للكائن عند الحاجه، لكي يملأ حاويته تماماً.
 clip_vertical إقتصاص رأسي

 خيار إضافي، يمكن ضبطه للحصول على الحافة العليا و\أو السفلى للتابع لإقتصاص حدود حاويته. 

يعتمد الإقتصاص على الجاذبية الرأسيه: الجاذبية العليا تقتص الحافة السفلى، الجاذبية السفلى تقتص الحافة العليا، ولا واحدة منهما تقتص كلا الحافتين.

 clip_horizontal إقتصاص أفقي

خيار إضافي، يمكن ضبطه للحصول على الحافة اليسرى و\أو اليمنى للتابع لإقتصاص حدود حاويته. 

يعتمد الإقتصاص على الجاذبية الأفقيه: الجاذبية اليسرى تقتص الحافة اليمنى، الجاذبية اليمنى تقتص الحافة اليسرى، ولا واحدة منهما تقتص كلا الحافتين.

سمة android:scaleHeight

النسبة المئوية. إرتفاع المقياس، يعبر عنه كنسبة مئوية لحدود الرسوميات. شكل القيمة هو XX%. مثال، 100%, 12.5% ألخ.

سمة android:scaleWidth

النسبة المئوية. عرض المقياس، يعبر عنه كنسبة مئوية لحدود الرسوميات. شكل القيمة هو XX%. مثال، 100%, 12.5% ألخ.

مثال:
<?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.

الإشارة للمصدر:

في ملف الجافا: 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>

 

مصادر الرسوميات

 

العناصر:
عنصر <shape>

شكل الرسوميات. يجب أن يكون هذا العنصر الأساسي.

السمات:

سمة xmlns:android

يمثل بالمتغير سلسله. مطلوبه. يحدد نطاق XML الذي يجب أن يكون:
"http://schemas.android.com/apk/res/android"

سمة android:shape

كلمة رئيسيه. تحدد نوع الشكل. القيم الصالحة هي:

القيمه الوصف
“rectangle” مستطيل مستطيل يملأ حاوية المعاينه، هذا هو الشكل الإفتراضي.
“oval” بيضاوي شكل بيضاوي يناسب أبعاد حاوية المعاينه.
“line” خط خط أفقي يمتد بعرض حاوية المعاينه. هذا الشكل يتطلب عنصر <stroke>لتحديد عرض الخط.
“ring” حلقه  شكل حلقه.

يتم إستخدام السمات التالية فقط عندما تكون السمة كالتالي android:shape="ring":

سمة android:innerRadius

البعد. نصف قطر الجزء الداخلي من الحلقه (الفتحة في المنتصف)، كقيمة للبعد أو مصدر للبعد.

سمة android:innerRadiusRatio

تمثل بالمتغير عائم Float. نصف القطر للجزء الداخلي من الحلقة، يعبر عنه بنسبة عرض الحلقه.

مثال، إذا كان android:innerRadiusRatio="5" فإن نصف القطر الداخلي يساوي عرض الحلقة مقسوماً على 5.

يتم تجاهل هذه القيمه بواسطة android:innerRadius. القيمة الإفتراضية هي 9.

سمة android:thickness

البعد. سمك الحلقه، يعتبر قيمة للبعد أو مصدر للبعد.

سمة android:thicknessRatio

تمثل بالمتغير عائم Float. سمك الحلقة. يعبر عنه بنسبة عرض الحلقه. مثال، إذا كانت قيمة android:thicknessRatio="2"، فإن السمك يساوي عرض الحلقة مقسوماً على 2. يتم تجاهل هذه القيمة بواسطة android:innerRadius. القيمة الإفتراضية هي 3.

سمة android:useLevel

تمثل بالمتغير منطقي. تأخذ القيمة “true” إذا كان هذا يستخدم كرسوميات مستوى القائمه. عادة يجب أن يتم تعيينه على “false” وإلا فإن شكلك قد لا يظهر.

العنصر <corners>

ينشئ زوايا مستديرة للشكل. يطبق فقط عندما يكون الشكل مستطيلاً.

السمات:

سمة android:radius

البعد. نصف القطر لكل الزوايا، كقيمة للبعد أو مصدر للبعد. يتم تجاهل هذا لكل زاوية بإستخدام السمات التاليه:

سمة android:topLeftRadius

البعد. نصف القطر للزاوية العلوية اليسرى، كقيمة للبعد أو مصدر للبعد.

سمة android:topRightRadius

البعد. نصف القطر للزاوية العلوية اليمنى، كقيمة للبعد أو مصدر للبعد.

سمة android:bottomLeftRadius

البعد. نصف القطر للزاوية السفلية اليسرى، كقيمة للبعد أو مصدر للبعد.

سمة android:bottomRightRadius

البعد. نصف القطر للزاوية السفلية اليمنى، كقيمة للبعد أو مصدر للبعد.

ملاحظة: يجب أن توفر كل زاوية (مبدئياً) نصف قطر زاويه أكبر من 1، وإلا لن يتم تدوير أي زوايا.

إذا كنت تريد عدم تدوير زوايا معينه، فعليك إستخدام android:radius لتعيين نصف قطر الزاوية الإفتراضي الأكبر من 1، ومن ثم تجاهل كل زاوية بالقيم التي تريدها فعلاً.

وتوفير القيمة صفر (0dp) في الزوايا التي لا تريدها أن تكون مستديرة.

العنصر <gradient>

تحدد لون تدرج الشكل.

السمات:

سمة android:angle

تمثل بالمتغير عدد صحيح. زاوية التدرج، بالدرجات. 0 هي من اليسار إلى اليمين، 90 هي من الأسفل إلى الأعلى. يجب أن يكون مضاعفاً للرقم 45. القيمة الإفتراضية هي 0.

سمة android:centerX

تمثل بالمتغير عائم. الموضع X النسبي لمركز التدرج (0 – 1.0).

سمة android:centerY

تمثل بالمتغير عائم. الموضع Y النسبي لمركز التدرج (0 – 1.0).

سمة android:centerColor

اللون. لون إختياري يأتي بين بداية ونهاية الألوان، كقيمة سداسية عشريه أو مصدر لون.

سمة android:endColor

اللون. لون النهايه، كقيمة سداسية عشريه أو مصدر لون.

سمة android:gradientRadius

تمثل بالمتغير عائم. نصف قطر التدرج. يتم تطبيقها فقط عندما يكون android:type="radial".

سمة android:startColor

اللون. لون البدايه، كقيمة سداسية عشريه أو مصدر لون.

سمة android:type

كلمة رئيسيه. نوع نمط التدرج لتطبيقه. القيم الصالحة هي:

القيمه الوصف
“linear” خطي تدرج خطي. وهي القيمة الإفتراضيه.
“radial” نصف قطري تدرج نصف قطري. لون البدايه “الأول” هو لون المنتصف.
“sweep” مسح تدرج خط مسح.

 

سمة android:useLevel

تمثل بالمتغير منطقي. يأخذ القيمة “true” إذا أستخدم هذا كمصدر مستوى القائمة.

العنصر <padding>

الحواشي ليتم تطبيقها على عنصر المحتوي على المعاينه (يقوم هذا بحشو موضع معاينة المحتوى، وليس الشكل).

السمات:

سمة android:left

البعد. الحاشية اليسرى، تعتبر كقيمة للبعد أو مصدر للبعد.

سمة android:top

البعد. الحاشية العليا، تعتبر كقيمة للبعد أو مصدر للبعد.

سمة android:right

البعد. الحاشية اليمنى، تعتبر كقيمة للبعد أو مصدر للبعد.

سمة android:bottom

البعد. الحاشية السفلى، تعتبر كقيمة للبعد أو مصدر للبعد.

العنصر <size>

حجم الشكل.

السمات:

سمة android:height

البعد. إرتفاع الشكل، تعتبر كقيمة للبعد أو مصدر للبعد.

سمة android:width

البعد. عرض الشكل، تعتبر كقيمة للبعد أو مصدر للبعد.

ملاحظة: يتغير الشكل إلى حاوية المعاينة المتناسبة مع الأبعاد المحددة هنا، بشكل إفتراضي. عندما تستخدم الشكل في معاينة الصورة ImageView، يمكنك تقييد المقاييس عن طريق تعيين قيمة android:scaleType إلى المنتصف “center”.

العنصر <solid>

لون ثابت لملء الشكل.

السمات:

سمة android:color

اللون. اللون المراد تطبيقه على الشكل، كقيمة سداسية عشريه أو مصدر لون.

العنصر <stroke>

حدود خط الشكل.

السمات:

سمة android:width

البعد. سمك الخط، يعتبر كقيمة للبعد أو مصدر للبعد.

سمة android:color

اللون. لون الخط، كقيمة سداسية عشرية أو مصدر لون.

سمة android:dashGap

البعد. المسافة بين شرطات dashes “-” الخط، تعتبر كقيمة للبعد أو مصدر للبعد. تكون صالحة فقط إذا تم تعيين android:dashWidth.

سمة android:dashWidth

البعد. حجم كل خط شرطة dash “-“، كقيمة للبعد أو مصدر للبعد. تكون صالحة فقط إذا تم تعيين android:dashGap.

مثال:

ملف 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 = shape

JAVA

Resources res = getResources();
Drawable shape = ResourcesCompat.getDrawable(res, R.drawable.gradient_box, getTheme());

TextView tv = (TextView)findViewById(R.id.textview);
tv.setBackground(shape);

 

راجع أيضاً: 
قائمة حالة اللون. 

 

 


للإطلاع على المقال باللغة الإنجليزية أضغط هنا.

الإعلانات