שני הסוגים הנפוצים ביותר של פורמטים של תמונות הם תמונות רסטר ותמונות וקטוריות.
פורמט של גרפיקה רסטרית מכיל פיקסלים: ריבועים קטנים שכל אחד מהם מכיל צבע (שמורכב מערכים של אדום, ירוק, כחול ואלפא). כשממקמים הרבה פיקסלים ביחד, אפשר ליצור תמונה מפורטת מאוד, כמו תמונה רגילה. לגרפיקה רסטרית יש רזולוציה קבועה (מספר קבוע של פיקסלים). המשמעות היא שככל שמגדילים את התמונה, היא מאבדת פרטים ועלולה להופיע בה פיקסליזציה. דוגמאות לפורמטים של גרפיקה רסטרית: 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
תומך בקבוצת משנה של פקודות Scalable Vector Graphics (SVG). לא
ניתן לייצג את כל התמונות כווקטורים (לדוגמה, אי אפשר להפוך את התמונות שמצלמים עם
המצלמה לווקטורים).
אפשר ליצור ImageVector
מותאם אישית על ידי ייבוא של קובץ XML קיים של וקטור (שייוב ל-Android Studio באמצעות כלי הייבוא) או על ידי הטמעה של המחלקה והנפקת פקודות נתיב באופן ידני.
בתרחישי שימוש בסיסיים, המחלקה painterResource()
פועלת עבור ImageVectors
באותו אופן שבו היא פועלת עבור המחלקה ImageBitmap
, ומחזירה את הערך 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}
- מקורות מידע ב-Compose
- טעינת תמונות {:#loading-images}