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

En yaygın iki resim biçimi türü, kafes ve vektör resimlerdir.

Kafes grafik biçimi pikseller içerir: Renk içeren küçük, bağımsız kareler (kırmızı, yeşil, mavi ve alfa değerlerinden oluşur). Çok sayıda pikseli bir araya getirirken, fotoğraf gibi çok ayrıntılı bir resim oluşturulabilir. Raster grafiğinin çözünürlüğü sabittir (sabit sayıda piksel). Bu, resmin boyutunu artırdığınızda ayrıntıların kaybedilebileceği ve pikselleşmenin meydana gelebileceği anlamına gelir. Kafes grafik biçimlerine örnek olarak JPEG, PNG ve WEBP verilebilir.

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

Diğer yandan, vektör resimler ekrandaki görsel öğelerin ölçeklenebilir matematiksel gösterimleridir. Vektör, ekrandaki resmin (çizgi, nokta veya dolgu gibi) nasıl çizileceğini açıklayan bir komut dizisidir. Ekrandaki bir vektörü ölçeklendirirken, matematiksel formül farklı komutlar arasındaki ilişkiyi koruyacağı için kaliteyi kaybetmez. ImageVector'a iyi bir örnek olarak, tümü matematiksel formüllerle tanımlanabileceğinden Malzeme Sembolleri verilebilir.

Vektör örneği (dosya uzantıları .xml şeklindedir veya Kotlin kodunda tanımlanmıştır)
Şekil 2: Vektör örneği (dosya uzantıları .xml şeklindedir veya Kotlin kodunda tanımlanmıştır)

ImageBitmap

Compose'da kafes resim (genellikle Bitmap olarak adlandırılır) ImageBitmap örneğine yüklenebilir. Bit eşlemi ekrana çizmekten de BitmapPainter sorumludur.

Basit kullanım alanlarında painterResource() kullanılabilir. Böylece ImageBitmap oluşturulur ve Painter nesnesi (bu örnekte BitmapPainter) döndürülür:

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

Daha fazla özelleştirmeye (ör. özel boyacı uygulaması) ihtiyacınız varsa ve ImageBitmap'a erişmeniz gerekiyorsa şablonu aşağıdaki şekilde yükleyebilirsiniz:

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

ImageVector

VectorPainter, ekrana bir 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 çekilebilir XML dosyasını içe aktararak (içe aktarma aracı kullanılarak Android Studio'ya içe aktarılır) veya sınıfı uygulayıp yol komutlarını manuel olarak vererek özel bir ImageVector oluşturabilirsiniz.

Basit kullanım alanlarında, painterResource() özelliğinin ImageBitmap sınıfı için çalışma şekline benzer şekilde, ImageVectors için de geçerlidir ve sonuç olarak bir VectorPainter döndürülür. painterResource(), VectorDrawables ve BitmapDrawables öğelerinin VectorPainter ve BitmapPainter içine yüklenmesini sırasıyla 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 ihtiyacınız varsa ve ImageVector cihazına erişmeniz gerekiyorsa aşağıdaki şekilde yükleyebilirsiniz:

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