2017-02-18 3 views
0

Ich habe ein weißes Bild und in der App muss ich dieses Bild in vielen verschiedenen Farben zeigen.Können Sie programmgesteuert die Farbe des Bildes ändern?

Gibt es eine Möglichkeit, die Farbe dieses weißen Bildes programmgesteuert zu ändern, so dass ich nicht für jede Farbe ein eigenes Bild haben muss?

Für jetzt habe ich dies:

button.setBackgroundResource(getResources().getIdentifier("image_white", "drawable", getPackageName())); 
+0

Haben Sie versucht, einige Farbfilter hinzuzufügen? Überprüfen Sie dies: http://stackoverflow.com/questions/8193447/i-want-to-add-a-color-filter-to-the-imageview – JonZarate

+0

ist die Ressource ein Zeichen? –

+0

ist das Bild eine feste Farbe? –

Antwort

3

Ja, es ist einfach. Sie können programmgesteuert Farben von Bildern mithilfe von Farbfiltern ändern.

Hier ist ein einfaches Beispiel, wie Sie es verwenden können.

ImageView imageView = (ImageView) findViewById(R.id.imageV); 
imageView.setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN); 

Die Farbe des Bildes wird in Rot geändert. Sie können jede Farbe Ihrer Wahl verwenden, aber die Hauptmagie liegt darin, den richtigen Modus für PorterDuff zu verwenden. Sie können es auch versuchen mit PorterDuff.Mode.SRC_ATOP, wenn Sie nicht mit den Ergebnissen zufrieden sind.

Drawable myDrawable = ContextCompat.getDrawable(context,R.drawable.drawable_id); 
myDrawable.setTint(ContextCompat.getColor(context, R.color.color_id); 

Sorry für mein Englisch:

+0

Bitte überlegen Sie, die Antwort zu upvotieren, wenn es Ihnen hilft. –

0

Sie können die Farbe ändern, wenn Sie Material Design-Ikonen verwenden.

android:backgroundTint="@color/yourColor" android:tint="@color/yourColor"

Here you can find material design icons.

Andernfalls können Sie benutzerdefinierte Xml-Ressource-Datei verwenden, um den Hintergrund zu ändern, aber ich denke, ich werde nicht Ihren Bedürfnissen entsprechen.

0

können Sie verwenden. Ich hoffe es hilft.

Verwandte Themen