النوعان الأكثر شيوعًا من تنسيقات الصور هما الصور النقطية والمتجهة.
يحتوي تنسيق الرسم الممسوح ضوئيًا على وحدات بكسل: وهي مربّعات فردية صغيرة تحتوي على لون (مكوّن من قيم الأحمر والأخضر والأزرق ودرجة الشفافية). عند وضع الكثير من وحدات البكسل معًا، يمكن إنشاء صورة مفصّلة للغاية، مثل صورة فوتوغرافية. يتميز الرسم المتري بدرجة دقة ثابتة (عدد ثابت من وحدات البكسل). وهذا يعني أنّه عند زيادة حجم الصورة، تفقد التفاصيل وقد تظهر بها بكسلات. ومن الأمثلة على تنسيقات الرسومات المخصّصة للطباعة تنسيقات JPEG وPNG وWEBP.
من ناحية أخرى، الصور المتجهة هي تمثيلات رياضية قابلة للتوسيع لأحد العناصر المرئية على الشاشة. المتّجه هو مجموعة من الأوامر التي تصف كيفية رسم الصورة على الشاشة، مثل خط أو نقطة أو تعبئة. عند تكبير متجه على الشاشة، لن تنخفض جودته لأنّ الصيغة الحسابية ستحافظ على العلاقة بين الأوامر المختلفة. من الأمثلة الجيدة على ImageVector رموز Material، إذ يمكن تحديدها جميعًا باستخدام معادلات رياضية.
ImageBitmap
في أداة "الإنشاء"، يمكن تحميل صورة نقطية (يُشار إليها غالبًا باسم Bitmap
)
إلى مثيل ImageBitmap
، ويكون BitmapPainter
هو المسؤول عن
رسم الصورة النقطية على الشاشة.
في حالات الاستخدام البسيطة، يمكن استخدام painterResource()
الذي يتولّى
إنشاء ImageBitmap
ويعرض عنصر Painter
(في هذه الحالة،
BitmapPainter
):
Image( painter = painterResource(id = R.drawable.dog), contentDescription = stringResource(id = R.string.dog_content_description) )
إذا كنت بحاجة إلى مزيد من التخصيص (مثل تنفيذ ImageBitmap
مخصّص) وتحتاج إلى الوصول إلى ImageBitmap
نفسه، يمكنك تحميله
بالطريقة التالية:
val imageBitmap = ImageBitmap.imageResource(R.drawable.dog)
ImageVector
يكون VectorPainter
مسؤولاً عن رسم ImageVector
على الشاشة.
يتيح ImageVector
مجموعة فرعية من أوامر SVG. لا يمكن تمثيل بعض الصور
كرسومات متجهة (على سبيل المثال، لا يمكن
تحويل الصور التي تلتقطها بالكاميرا إلى رسومات متجهة).
يمكنك إنشاء ImageVector
مخصّص إما من خلال استيراد ملف XML لرسم ImageVector
متوفّر (تم استيراده إلى "استوديو Android" باستخدام أداة الاستيراد) أو
تنفيذ الفئة وإصدار أوامر المسار يدويًا.
في حالات الاستخدام البسيطة، تعمل painterResource()
بالطريقة نفسها التي تعمل بها مع فئة
ImageBitmap
، كما تعمل مع ImageVectors
، ما يؤدي إلى عرض
VectorPainter
كنتيجة. تعالج الإضافة painterResource()
تحميل
VectorDrawables
وBitmapDrawables
إلى VectorPainter
وBitmapPainter
على التوالي. لتحميل VectorDrawable
في صورة، استخدِم:
Image( painter = painterResource(id = R.drawable.baseline_shopping_cart_24), contentDescription = stringResource(id = R.string.shopping_cart_content_desc) )
إذا كنت بحاجة إلى مزيد من التخصيص وتريد الوصول إلى ImageVector
نفسه، يمكنك تحميله بالطريقة التالية:
val imageVector = ImageVector.vectorResource(id = R.drawable.baseline_shopping_cart_24)
أفلام مُقترَحة لك
- ملاحظة: يتم عرض نص الرابط عندما تكون لغة JavaScript غير مفعّلة.
- الرسام المخصّص {:#custom-painter}
- المراجع في ميزة "الإنشاء"
- جارٍ تحميل الصور {:#loading-images}