Mehmet Hanoğlu

Mehmet Hanoğlu

Full-Stack Developer

Etiketler


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 ikonun SVG formatı uyumsuz. Uygun formata dönüştürmek için svg2android aracını kullandım. Bu sayede SVG'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