ImageBitmap ve ImageVector karşılaştırması

En yaygın iki resim biçimi raster ve vektör resimlerdir.

Rastır grafik biçimi, pikseller içerir: Renk (kırmızı, yeşil, mavi ve alfa değerlerinden oluşur) içeren küçük kareler. Çok sayıda piksel bir araya getirildiğinde fotoğraf gibi çok ayrıntılı bir resim oluşturulabilir. Rastır grafiklerin çözünürlüğü sabittir (sabit piksel sayısı). Bu, resmin boyutunu artırdığınızda ayrıntıların kaybolacağı ve pikselleşmenin oluşabileceği anlamına gelir. Rastır grafik biçimlerine örnek olarak JPEG, PNG ve WEBP verilebilir.

JPEG dosyası örneği
Şekil 1: JPEG dosyası örneği

Öte yandan vektör resimler, ekrandaki görsel bir öğenin ölçeklenebilir matematiksel gösterimlerinden oluşur. Vektör, resmin ekranda nasıl çizileceğini açıklayan bir komut kümesidir (ör. çizgi, nokta veya dolgu). Bir vektörü ekranda ölçeklendirirken matematiksel formül farklı komutlar arasındaki ilişkiyi koruduğundan kalite kaybı yaşanmaz. Tümünün matematiksel formüllerle tanımlanabilmesi nedeniyle, materyal simgeleri, ImageVector'a iyi bir örnektir.

Vektör örneği (dosya uzantıları .xml'dir veya Kotlin kodunda tanımlanır)
Şekil 2: Vektör örneği (dosya uzantıları .xml biçimindedir veya Kotlin kodunda tanımlanır)

ImageBitmap

Oluşturma'da, bir raster resim (genellikle Bitmap olarak adlandırılır) bir ImageBitmap örneğine yüklenebilir. Bit eşlemenin ekrana çizilmesinden ise BitmapPainter sorumludur.

Basit kullanım alanları için painterResource() kullanılabilir. Bu işlev, ImageBitmap oluşturma ve Painter nesnesi (bu durumda BitmapPainter) döndürme işlemlerini gerçekleştirir:

Image(
    painter = painterResource(id = R.drawable.dog),
    contentDescription = stringResource(id = R.string.dog_content_description)
)

Daha fazla özelleştirmeye (ör. özel bir boya uygulaması) ve ImageBitmap'ye erişmeye ihtiyacınız varsa ImageBitmap'yi aşağıdaki şekilde yükleyebilirsiniz:

val imageBitmap = ImageBitmap.imageResource(R.drawable.dog)

ImageVector

VectorPainter, ekrana ImageVector çizmekten sorumludur. ImageVector, SVG komutlarının bir alt kümesini destekler. Tüm resimler vektör olarak temsil edilemez (örneğin, kameranızla çektiğiniz fotoğraflar vektöre dönüştürülemez).

Mevcut bir vektör çizilebilir XML dosyasını içe aktararak (içe aktarma aracı kullanılarak Android Studio'ya aktarılır) veya sınıfı uygulayıp yol komutlarını manuel olarak vererek özel bir ImageVector oluşturabilirsiniz.

Basit kullanım alanları için painterResource(), ImageBitmap sınıfında olduğu gibi ImageVectors için de çalışır ve sonuç olarak bir VectorPainter döndürür. painterResource(), VectorDrawables ve BitmapDrawables öğelerinin sırasıyla VectorPainter ve BitmapPainter öğelerine yüklenmesini yönetir. Bir resme VectorDrawable yüklemek için şunu kullanın:

Image(
    painter = painterResource(id = R.drawable.baseline_shopping_cart_24),
    contentDescription = stringResource(id = R.string.shopping_cart_content_desc)
)

Daha fazla özelleştirmeye ve ImageVector öğesine erişmeniz gerekiyorsa dosyayı şu şekilde yükleyebilirsiniz:

val imageVector = ImageVector.vectorResource(id = R.drawable.baseline_shopping_cart_24)