Setiap kali saya membuat ikon ImageView dengan ditambahkan menggunakan Aset Vector Android Studio, saya mendapatkan kesalahan di baris app:srcCompat="@drawable/ic_play"
Ketika saya mengubah app:srcCompat
dengan android:src
, kesalahan hilang tetapi ikon tampak pixelated.
Apa perbedaan utama di antara keduanya
app:srcCompat="@drawable/ic_play"
dan
android:src="@drawable/ic_play"
sumber
build.gradle
, tetapi masih tidak berfungsi, ada ide?Jika Anda menggunakan
android:src="@drawable/some_vector"
tanpavectorDrawables.useSupportLibrary = true
dalam file build.gradle dan aplikasi Anda memiliki gambar vektor (gambar vektor), maka saat membangun file apk Plugin Android gradle menghasilkan banyak file * .png untuk layar yang berbeda (hdpi, xhdpi ...) dari setiap vektor Anda dapat ditarik (hanya untuk API = <19). Hasilnya - ukuran apk yang lebih besar .Saat menggunakan
app:srcCompat="@drawable/some_vector"
denganvectorDrawables.useSupportLibrary = true
android menggunakan file yang dapat digambar vektor tanpa menghasilkan*.png
file.Anda dapat memeriksa ini dengan alat penganalisa Android Studio apk. Hanya membangun apk dengan dan tanpa
vectorDrawables.useSupportLibrary = true
.Saya pikir ini adalah perbedaan utama.
sumber
Menggunakan:
Atribut srcCompat sebenarnya didefinisikan dalam pustaka AppCompat. Penting: Anda perlu menambahkan namespace yang sesuai untuk ini.
Catatan
Apa yang Anda dapatkan tampaknya hanya kesalahan serat yang dapat diabaikan. Saya telah mencoba dan mendapatkan kesalahan yang sama, tetapi berfungsi dengan benar.
Anda dapat menggunakan
tools:ignore="MissingPrefix"
untuk menghindari melihat kesalahan ini, untuk sementara waktu.Saya harap ini membantu.
sumber
Saat menggunakan
AppCompat
denganImageView
(atau subkelas sepertiImageButton
danFloatingActionButton
), Anda akan dapat menggunakanapp:srcCompat
atribut baru untuk referensi gambar yang dapat digambar pada versi platform yang lebih lama (serta semua gambar lain yang tersedia untukandroid:src
) .android.support.v7.appcompat.R.attr.srcCompat :
Jangan lupa menambahkan
xmlns:app="http://schemas.android.com/apk/res-auto"
saat digunakanapp:srcCompat
.sumber
Vektor dan vektor animasi hanya didukung dalam versi terbaru dari framework. srcCompat dapat digunakan dengan pustaka kompatibilitas untuk membuatnya berfungsi, tetapi ini hanya berfungsi dengan tampilan tertentu di pustaka dukungan. Perhatikan bahwa aplikasi: digunakan sebagai ganti android :. Ini berarti ini bukan bagian dari kerangka kerja, tetapi parameter yang ditentukan oleh aplikasi Anda.
sumber
adalah merujuk bahwa itu adalah AppCompatActivity src yang datang di perpustakaan dukungan sementara
mengacu pada aktivitas sederhana.
sumber
Saat menggunakan
AppCompat
denganImageView
(atau subkelas sepertiImageButton
danFloatingActionButton
), Anda akan dapat menggunakanapp:srcCompat
atribut baru untuk mereferensikan drawable vektor (serta drawable lainnya yang tersedia untukandroid:src
). Dan jika Anda mengubah drawable saat runtime, Anda akan dapat menggunakansetImageResource()
metode yang sama seperti sebelumnya (tidak ada perubahan di sana).Menggunakan
AppCompat
danapp:srcCompat
merupakan metode yang paling mudah untuk mengintegrasikan drawable vektor ke dalam aplikasi Anda. Anda akan menemukan bahwa secara langsung referensi gambar yang dapat digambar di luarapp:srcCompat
akan gagal sebelum Lollipop .sumber
Android 5.0 (API level 21) dan yang lebih tinggi menyediakan dukungan vektor yang dapat digambar sehingga untuk mendukung gambar vektor di aplikasi versi yang lebih lama: srcCompat telah ditambahkan
sumber