Latar Belakang
Saya perhatikan bahwa Android sekarang mendukung beberapa jenis gambar vektor, melalui kelas yang disebut " VectorDrawable " (dan juga AnimatedVectorDrawable , BTW). Saya telah menemukannya dengan melihat apa yang baru di Android-Studio .
Aku ingin tahu apakah ini akan menjadi akhir harus menempatkan beberapa file ke dalam beberapa folder ( mdpi
, hdpi
, xhdpi
, dll). Itu akan bagus dan mungkin meminimalkan ukuran aplikasi pada beberapa kasus.
Pertanyaan-pertanyaan
Saya ingin mengajukan beberapa pertanyaan tentang kelas baru ini:
Apakah mungkin untuk menggunakannya di versi Android yang lebih lama, mungkin melalui pustaka bahkan pustaka dukungan Google?
Saya tidak terbiasa dengan cara kerjanya, tetapi dapatkah Lollipop menangani file SVG? Bisakah itu melakukan apa pun yang dapat dicapai pada file SVG?
Apakah ada contoh / tutorial / video yang menggunakannya, selain dokumentasi yang saya temukan?
sumber
s a very usefull tool but I
hasil yang tidak benar dalam kasus seperti itu dan saya tidak tahu apa yang salah ... Hmmm, untuk rilis lebih lanjut saya berharap alat ini akan memberi tahu tentang format yang buruk ... Jika saya menggunakan file-svg murni dengan 3-pihak libs semuanya Ok ...Jawaban:
UPDATE PADA Maret 2016
Dengan pembaruan Android Support Library 23.2.1 , Mendukung Vector Drawable dan Animated Vector Drawable. (Anda juga dapat menggunakan latestone untuk hal yang sama)
Harap perbarui versi pustaka dalam file gradle.
compile 'com.android.support:recyclerview-v7:23.2.1'
Sumber daya dapat digambar dengan vektor memungkinkan Anda mengganti beberapa aset png dengan satu grafik vektor , yang ditentukan dalam XML. Meskipun sebelumnya terbatas pada Lollipop dan perangkat yang lebih tinggi , keduanya
VectorDrawable
danAnimatedVectorDrawable
sekarang tersedia melalui dua Support Library baru, support-vector-drawable dan animated-vector-drawable.app:srcCompat
atribut baru untuk mereferensikan vector drawable.Periksa sumber di github dengan beberapa contoh contoh .
Perubahan untuk pustaka appcompat v7:
Ketergantungan yang dikembalikan pada aset vektor sehingga pengembang yang menggunakan pustaka appcompat tidak dipaksa untuk menggunakan
VectorDrawable
dan tanda build yang terkait.sumber
compile
pernyataan di atas menyiratkan bahwa penggunaan proyekRecyclerView
yang tidak selalu terjadi.Pembaruan 2 : Mereka mengaktifkannya lagi di Support Library 23.4.0:
Periksa 23.4.0 ini tersedia sekarang
Pembaruan : Ini tidak berfungsi dari versi 23.3.0 Periksa di sini untuk detailnya. Proxy drawable tidak berfungsi.
app:srcCompat
dansetImageResource()
bekerja, bagaimanapun.Dukungan Vector Drawable tersedia dari Support Library versi 23.2 dan yang lebih baru. Namun, untuk menggunakan drawable tersebut dengan benar, mereka harus direferensikan secara tidak langsung.
Langkah pertama adalah meningkatkan
AppCompat
versi.compile 'com.android.support:appcompat-v7:23.2.0'
Kedua, aktifkan dukungan Vector Drawable. Jika menggunakan plugin Gradle, 2.0+
android { defaultConfig { vectorDrawables.useSupportLibrary = true } }
Jika tidak
android { defaultConfig { generatedDensities = [] } aaptOptions { additionalParameters "--no-version-vectors" } }
Ketiga , lihat jawaban terkait .
sumber
MenuItem
, yang berfungsi dengan baik.Anda dapat mencoba perpustakaan dukungan ini . Ini mendukung VectorDrawable dan AnimatedVectorDrawable yang diperkenalkan di Lollipop dengan kompatibilitas mundur sepenuhnya.
sumber
Untuk melengkapi beberapa jawaban di sini: ya, Anda bisa mendapatkan dukungan untuk VectorDrawables pra-Lollipop , setidaknya sebagian.
Seberapa parsial? Itu tergantung - Saya telah membuat diagram ini untuk membantu (berlaku untuk Support Library 23.4.0 hingga - setidaknya - 25.1.0).
sumber
Sayangnya, untuk saat ini VectorDrawable dan AnimatedVectorDrawable tidak tersedia di pustaka dukungan. Tetapi untuk memanfaatkan fitur ini dalam versi Pra-Lollipop, Anda dapat menggunakan backport tidak resmi yang disebut MrVector.
MrVector tersedia di Github dan akan mendukung Android versi 7+.
Dari Readme resmi
Untuk menambahkan dependensi MrVector, tambahkan baris berikut ke blok dependensi build.gradle Anda.
compile 'com.telly:mrvector:0.2.0'
Untuk membuat drawable dari vektor XML,
Semoga ini membantu.
sumber
Jika Anda menggunakan VectorDrawable, Android Studio akan secara otomatis membuat file PNG yang sesuai (berdasarkan file XML Anda) untuk versi Pre-Lollipop.
Perhatikan bahwa file PNG yang dihasilkan tersebut dianggap BitmapDrawables, bukan VectorDrawables pada perangkat yang menjalankan API di bawah 21 dan oleh karena itu tidak dapat dianimasikan atau serupa pada perangkat tersebut.
Lihat "kompatibilitas mundur" untuk detail lebih lanjut: http://android-developers.blogspot.co.at/2015/09/android-studio-14.html
sumber
Lollipop tidak dapat menangani file SVG tanpa libs pihak ketiga.
Solusi terbaik yang saya temukan adalah lib BetterVectorDrawable bersama dengan SVG to VectorDrawable Converter .
BetterVectorDrawable adalah implementasi VectorDrawable untuk Android 4.0+ dengan perilaku fall-back yang dapat dikonfigurasi di Android 5.0+.
SVG to VectorDrawable Converter adalah pengonversi batch gambar SVG ke file sumber daya XML Android VectorDrawable. Versi online
Tautan mengarah ke readmes, yang memberikan informasi yang cukup tentang cara menggunakan lib dan konverter.
sumber
Tidak ada VectorDrawables di pustaka dukungan saat ini.
Funkystein benar - VectorDrawable mirip dengan SVG, hanya mendukung fitur gambar vektor yang paling banyak diminati sehingga android bisa fokus pada performa. pathData, misalnya, memiliki format yang sama dengan string "d" SVG.
sumber
Kabar baiknya adalah Google merilis Android Support Library 23.2 Support Vector Drawable dan Animated Vector Drawables!
Tapi terima kasih kepada orang-orang yang mem-porting perpustakaan ini sebelum Google!
Panduan penggunaan:
Lihat " age-of-the-vektor " oleh @chrisbanes
sumber