Dwa najpopularniejsze formaty obrazów to obrazy rastrowe i wektorowe.
Format rastrowy zawiera piksele, czyli niewielkie, pojedyncze kwadraty zawierające symbol koloru (złożony z wartości czerwonego, zielonego, niebieskiego i alfa). Gdy umieścisz dużo pikseli, może powstać bardzo szczegółowy obraz, np. fotografia. Grafika rastrowa ma stałą rozdzielczość (niezmienną liczbę pikseli). Oznacza to, że Po zwiększeniu rozmiaru obrazu stracisz szczegóły, a pikselizacja wystąpienia. Przykłady formatów grafiki rastrowej to JPEG, PNG i WEBP.

Zdjęcia wektorowe to natomiast skalowalne reprezentacje matematyczne elementu wizualnego na ekranie. Wektor to zestaw poleceń opisujących, jak rysować obrazu na ekranie, np. linii, punktu lub wypełnienia. Skalowanie wektora nie utraci jakości, ponieważ wzór matematyczny zależności między poszczególnymi poleceniami. Dobry przykład ImageVector są symboly materiału, ponieważ każdy z nich można zdefiniować za pomocą wzory matematyczne.

ImageBitmap
W funkcji Compose można załadować obraz rastrowy (nazywany często Bitmap
)
w instancji ImageBitmap
, a BitmapPainter
odpowiada za
przez rysowanie bitmapy na ekran.
W prostych przypadkach można użyć parametru painterResource()
, który służy do obsługi:
tworząc ImageBitmap
i zwraca obiekt Painter
(w tym przypadku
BitmapPainter
):
Image( painter = painterResource(id = R.drawable.dog), contentDescription = stringResource(id = R.string.dog_content_description) )
Jeśli potrzebujesz dalszego dostosowywania (np. niestandardowej implementacji funkcji malowania) i chcesz uzyskać dostęp do samego ImageBitmap
, możesz go załadować w ten sposób:
val imageBitmap = ImageBitmap.imageResource(R.drawable.dog)
ImageVector
Za narysowanie elementu ImageVector
na ekranie odpowiada VectorPainter
.
ImageVector
obsługuje podzbiór poleceń SVG. Nie wszystkie obrazy można przedstawić jako wektorów (np. zdjęć zrobionych aparatem nie można przekształcić w wektory).
Możesz utworzyć niestandardowy ImageVector
, importując istniejący wektor
plik XML z możliwością rysowania (zaimportowany do Android Studio za pomocą narzędzia do importowania) lub
ręcznie zaimplementować klasę i wydać polecenia dotyczące ścieżki.
W przypadku prostych zastosowań, w których painterResource()
działa w klasie ImageBitmap
, działa też w klasie ImageVectors
, zwracając jako wynik wartość VectorPainter
. painterResource()
obsługuje wczytywanie
VectorDrawables
i BitmapDrawables
w: VectorPainter
i BitmapPainter
. Aby załadować VectorDrawable
do obrazu, użyj:
Image( painter = painterResource(id = R.drawable.baseline_shopping_cart_24), contentDescription = stringResource(id = R.string.shopping_cart_content_desc) )
Jeśli potrzebujesz dodatkowego dostosowania i potrzebujesz dostępu do ImageVector
może być wczytywany w taki sposób:
val imageVector = ImageVector.vectorResource(id = R.drawable.baseline_shopping_cart_24)
Polecane dla Ciebie
- Uwaga: tekst linku wyświetla się, gdy JavaScript jest wyłączony
- Niestandardowy malarz {:#custom-painter}
- Zasoby w funkcji Compose
- Wczytywanie obrazów {:#loading-images}