Saya mencoba mengubah warna pada gambar marker putih dengan kode. Saya telah membaca bahwa kode di bawah ini harus berubah warna, tetapi spidol saya tetap putih.
Drawable.setColorFilter( 0xffff0000, Mode.MULTIPLY )
Apakah saya melewatkan sesuatu? Apakah ada cara lain untuk mengubah warna pada drawables saya yang terletak di folder res saya?
Jawaban:
Coba ini:
Penggunaan
DrawableCompat
penting karena memberikan kompatibilitas ke belakang dan perbaikan bug pada perangkat API 22 dan sebelumnya.sumber
OverlayItems
yang mungkin menyebabkan masalah? Ini dapat ditarik secara teratur dari folder res saya, tidak ada yang istimewa ...Anda dapat mencoba ini untuk menggambar vektor svg
sumber
null
Drawable#setTintList(ColorStateList)
Anda mungkin perlu memanggil mutate () pada drawable atau kalau tidak semua ikon terpengaruh.
sumber
Cara lain untuk melakukan ini di Lollipop, android 5. + adalah mengatur warna pada bitmap yang dapat digambar seperti:
Ini akan bekerja untuk Anda jika Anda memiliki jumlah warna terbatas yang ingin Anda gunakan pada drawables Anda. Lihat posting blog saya untuk informasi lebih lanjut .
sumber
minSdkVersion 16
perangkat Android 4.1.1 ini.)android:background="..."
. Cukup aneh!Anda dapat mencoba ini
ImageView
. menggunakansetColorFilter()
.sumber
Saya telah menulis fungsi generik di mana Anda dapat melewatkan konteks, ikon id idable / ikon gambar mipmap dan warna baru yang Anda butuhkan untuk ikon itu.
Fungsi ini mengembalikan drawable.
sumber
Anda bisa mencoba ColorMatrixColorFilter, karena warna kunci Anda putih:
sumber
Ini berhasil untuk saya. Pastikan untuk meletakkan "ff" antara 0x dan kode warna. Seperti ini 0xff2196F3
sumber
Sama seperti jawaban yang diterima tetapi metode kenyamanan yang lebih sederhana:
Catatan, kode di sini adalah Kotlin.
sumber
Anda mungkin ingin mencoba
Mode.LIGHTEN
atauMode.DARKEN
. Android Javadocs mengerikan dalam menjelaskan apa yang dilakukan Mode PorterDuff. Anda dapat melihatnya di sini: PorterDuff | AndroidSaya sarankan melihat-lihat di Compositing di situs Mozilla di sini. (Mereka tidak memiliki semua mode yang android lakukan tetapi mereka memiliki banyak dari mereka)
sumber
Gunakan ini: Untuk java
untuk Kotlin
Anda dapat menggunakan PorterDuff.Mode.SRC_ATOP, jika latar belakang Anda memiliki sudut membulat dll.
sumber
Sintaksis
Contoh
sumber
Inilah yang saya lakukan:
sumber
Cukup gunakan
dalam file XML Anda. Ganti primary_color ke warna kustom
sumber
Buat Metode seperti ini:
dan gunakan seperti itu:
sumber
Cara termudah untuk melakukannya:
atau
a, r, g, b: Nilai warna argb.
sumber
Bagi mereka yang menggunakan Kotlin fungsi ekstensi sederhana:
dan kemudian lakukan
sumber