Android'de vektörel grafik kullanıp, grafik rengini kod ile değiştirebilirsiniz. Bu sayede her renk için farklı grafik kullanmak gerekmez.
Yapmak istediğim işlemler şunlardı:
- Bir klasör listesi ve listedeki klasör ikonları için renk seçebilmek.
- Tek bir vektörel grafik kullanmak.
Yaptığım işlemler:
-
FontAwesome'a ait bir ikonu SVG formatlı olarak indirdim.
-
Ardından Android Studio'ya
drawable
olarak aktarmak gerekiyordu. Fakat bu işlem için indirdiğim ikonunSVG
formatı uyumsuz. Uygun formata dönüştürmek için svg2android aracını kullandım. Bu sayedeSVG
'yi uyumlu olarak Sitesini Drawable XML formatına dönüştürdüm ve projeye dahil ettim. -
Layout içinde uygun şekilde kullanmak için, src olarak XML e dönüştürüp projeye eklemiş olduğum folder ikonunu ekledim. Altına tint olarak vermek istediğimiz rengi belirtebiliyoruz. Tabi sonradan bu rengi programatik olarak değiştirebiliyoruz
-
Buradaki layout'u ListView satırı olarak kullanıyorum. Her satırda ikon için farklı bir renk tanımlaması yapabileceğim. Kullandığım modelin adı Folder her folder modeline ait bir title ve color verisi mevcut. Koddaki folder.getColor() mevcut klasöre ait hex renk kodu. Örnek: #FF0000
Color.parseColor(folder.getColor()) ile hex renk kodunu int renk koduna dönüştürüyoruz. Ardından setColorFilter ile android.graphics.PorterDuff.Mode.SRC_IN modunu kullanarak grafiğin rengini değiştiriyoruz
holder.folder.setColorFilter(Color.parseColor(folder.getColor()), android.graphics.PorterDuff.Mode.SRC_IN);
Kullanılan renk seçim kütüphanesi: kristiyanP/colorpicker