2012-05-04 16 views
7

Ich muss einen Weg finden, um die Farbe der Bitmap in Android zu ändern. Ich muss die Farben des ovalen Bildes in meiner Anwendung glatt ersetzen/ändern, abhängig von int Wert. Ich brauche etwas wie wenn myValue=5 als Ändern der Farbe meines Bildes zu RED und wenn myValue=322 Farbe zu BLUE ändern. Der einzige Weg, die ich finde, ich kann dies tun wurde mit XML-Datei, die wie folgt aussieht:Android Farbe von ImageView/Bitmap ändern

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="oval" android:padding="10dp"> 
<!-- you can use any color you want I used here gray color--> 
<solid android:color="#cccccc"/> 
    <corners 
    android:bottomRightRadius="10dp" 
    android:bottomLeftRadius="10dp" 
    android:topLeftRadius="10dp" 
    android:topRightRadius="10dp"/> 
</shape> 

und danach, wenn myValue verändert ich meine ImageView Bildressource zu setzen. Aber auf diese Weise muss ich 35 verschiedene XML-Dateien erstellen ... was ich nicht für eine gute Idee halte.

Also wer kann bessere Lösung vorschlagen, dies zu tun?

Antwort

20

Dies ist, wie ich dieses Problem gelöst:

  1. ein ImageView mit src="@drawable/button"
  2. Deklarieren
  3. ein Drawable und setzen ColorFilter es erstellen und nach Verwenden Sie es als src zu Ihrem deklarierten ImageView wie folgt:

>

Drawable myIcon = getResources().getDrawable(R.drawable.button); 
ColorFilter filter = new LightingColorFilter(Color.BLUE, Color.BLUE); 
myIcon.setColorFilter(filter); 
color.setImageDrawable(myIcon); 
+0

Können Sie auch erwähnen, wie dies in der XML zu tun, wenn es möglich ist? – Bhargav

+4

Nvm Ich habe es gefunden, muss das 'android: tint' Attribut für' imageview' verwenden – Bhargav

1

sollten Sie dies.

Drawable myIcon = getResources().getDrawable(R.drawable.button); 
ColorFilter filter = new LightingColorFilter(Color.BLACK, Color.BLACK); 
myIcon.setColorFilter(filter); 
16

Diese Lösung funktioniert nicht sehr gut für mich. In einigen Bildern war die endgültige Farbe falsch. Ich benutze diese Lösung statt:

Drawable myIcon = getResources().getDrawable(R.drawable.your_image); 
myIcon.setColorFilter(Color.BLUE, PorterDuff.Mode.SRC_ATOP); 
((ImageView)findViewById(R.id.view_to_change)).setImageDrawable(myIcon); 
+0

Arbeitete ... danke eine Tonne! – cdkn7

+0

Danke, es funktioniert wie ein Charme :) – Tony

3
getResources().getDrawable(R.drawable.button); 

ist veraltet. Kann es auch so machen:

((ImageView) findViewById(R.id.my_icon)) 
    .setColorFilter(new LightingColorFilter(Color.BLUE, Color.BLUE)); 
Verwandte Themen