النوعان الأكثر شيوعًا من تنسيقات الصور هما الصور النقطية والمتجهة.
يحتوي تنسيق الرسومات النقطية على وحدات بكسل، وهي مربعات فردية صغيرة تحتوي على لون (مكوّن من قيم الأحمر والأخضر والأزرق وقيمة ألفا). عند وضع الكثير من وحدات البكسل معًا، يمكن تكوين صورة مفصّلة جدًا، مثل صورة فوتوغرافية. تتضمّن رسومات النقطية دقة ثابتة (عدد ثابت من وحدات البكسل). وهذا يعني أنّه عند زيادة حجم الصورة، تفقد الصورة بعض التفاصيل، وقد تظهر فيها وحدات البكسل. من الأمثلة على تنسيقات الرسومات النقطية 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
نفسه، يمكنك تحميله بالطريقة التالية:
val imageBitmap = ImageBitmap.imageResource(R.drawable.dog)
ImageVector
يكون VectorPainter
مسؤولاً عن رسم ImageVector
على الشاشة.
يتوافق ImageVector
مع مجموعة فرعية من أوامر SVG. لا يمكن تمثيل جميع الصور كمتجهات (على سبيل المثال، لا يمكن تحويل الصور التي تلتقطها بالكاميرا إلى متجهات).
يمكنك إنشاء ImageVector
مخصّص إما عن طريق استيراد ملف XML حالي قابل للرسم المتجهي (يتم استيراده إلى "استوديو 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}