النوعان الأكثر شيوعًا من تنسيقات الصور هما الصور النقطية والمتجهة.
يحتوي تنسيق الرسم النقطي على وحدات بكسل: مربعات فردية صغيرة تحتوي على لون (تتكون من قيم حمراء وخضراء وزرقاء وألفا). عند وضع الكثير من وحدات البكسل معًا، يمكن إنشاء صورة مفصّلة للغاية، مثل صورة فوتوغرافية. يكون للرسم النقطي دقة ثابتة (عدد ثابت من البكسل). وهذا يعني أنّه عند زيادة حجم الصورة، تفقد التفاصيل وقد تظهر بها بكسلات. ومن الأمثلة على تنسيقات الرسومات المخصّصة للطباعة تنسيقات JPEG وPNG وWEBP.
من ناحية أخرى، الصور المتجهة هي تمثيلات رياضية قابلة للتوسيع لأحد العناصر المرئية على الشاشة. المتّجه هو مجموعة من الأوامر التي تصف كيفية رسم الصورة على الشاشة، مثل خط أو نقطة أو تعبئة. عند تكبير متجه على الشاشة، لن تنخفض جودته لأنّ الصيغة الحسابية ستحافظ على العلاقة بين الأوامر المختلفة. من الأمثلة الجيدة على ImageVector رموز Material، إذ يمكن تحديدها جميعًا باستخدام معادلات رياضية.
ImageBitmap
في Compose، يمكن تحميل صورة نقطية (غالبًا ما يُشار إليها باسم 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}