Bisakah Android memakai SVG langsung sebagai drawable?

Resource VectorDrawable memakai kosakata XML milik Android: elemen vector dengan viewport, dimensi tampilan, dan path gambar. Mengganti nama logo.svg jadi logo.xml tidak menerjemahkan elemen-elemen itu. SVG memakai nama yang berbeda untuk isian, stroke, dan transform, serta mendukung fitur yang sengaja ditolak oleh pengekspor ini.

Pakai konverter SVG ke Android untuk ikon antarmuka yang sederhana atau ilustrasi flat. Konverter ini menerima SVG yang kamu unggah atau salah satu hasilmu yang sudah dibuka. Kalau kamu mulai dari bitmap, lakukan tracing gambar ke vektor dulu, periksa garis luarnya, lalu ekspor. Konversi resource tidak melakukan tracing ulang dan tidak menghapus syarat buka untuk hasil yang sudah ada.

Contoh kecil yang bisa kamu coba sendiri

Simpan segitiga ini sebagai triangle.svg lalu unggah. Pilih nama resource ic_triangle dan sisi terpanjang 24 dp.

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
  <path fill="#fa643c" d="M12 2L22 22H2Z"/>
</svg>

XML yang diunduh berisi viewport 24 × 24, dimensi tampilan 24 dp, dan satu path. Warna isian oranyenya menjadi warna Android dengan alfa di depan, #fffa643c. Taruh ic_triangle.xml di app/src/main/res/drawable/. Di layout, pakai android:src="@drawable/ic_triangle"; di kode aplikasi, pakai identifier resource drawable yang sesuai.

Viewport menggambarkan geometri. Dimensi dp menggambarkan ukuran tampilan yang dimaksudkan untuk drawable itu. SVG yang berbentuk persegi panjang tetap mempertahankan rasio aspeknya: memilih sisi terpanjang 48 dp tidak membuatnya melar jadi persegi. Nama resource diawali huruf kecil dan boleh berisi huruf kecil, angka, dan garis bawah.

Apa saja yang ikut terbawa saat konversi?

Konverter kami mendukung path dan bentuk geometris dasar, warna solid, opasitas isian, gaya stroke yang kompatibel, serta isian nonzero maupun even-odd. Transform yang didukung digabungkan langsung ke koordinat path. Isian even-odd inilah alasan ekspor ini ditujukan untuk API 24 dan yang lebih baru. Pengekspor ini tidak membuat pembungkus kompatibilitas untuk aplikasi yang lebih lama.

Teks, gradasi, mask, clipping, gambar yang disisipkan, dan efek butuh langkah persiapan yang berbeda. Ubah teks jadi outline di editor vektormu. Ubah stroke yang di-transform jadi outline kalau transform-nya menskalakan sumbu secara tidak sama. Opasitas grup bisa mengubah bentuk yang bertumpuk, jadi pengekspor menolaknya, bukan menerapkan opasitas secara terpisah lalu mengubah gambarnya. Hasilnya mencantumkan apa pun yang tidak aman dan sudah dihapus.

Untuk artwork yang detail, ekspor PNG bisa jadi resource yang lebih cocok. Jumlah path yang sangat banyak bisa memakan waktu rendering walaupun secara teknis file-nya vektor. Sederhanakan titik yang tidak perlu dan uji di ukuran tampilan yang sebenarnya.

Cek hasilnya di aplikasi

Build resource-nya di Android Studio dan periksa di latar terang dan gelap. Cek lubang di dalam huruf, stroke tipis, warna yang dimaksud, dan transparansi. Bandingkan file asli dengan drawable-nya di ukuran kecil, tempat detail kecil paling berpengaruh. Kalau XML berhasil dikompilasi, artinya resource-nya diterima; rendering di perangkat dan pengaturan tint aplikasimu tetap menentukan tampilan akhirnya.

Untuk ikon launcher, pakai pembuat ikon aplikasi. Ikon launcher punya persyaratan densitas dan layer adaptif yang tidak dikemas oleh ekspor drawable biasa.