2014-10-29 7 views
7

Ich weiß, dass mithilfe von Drittanbieter-Bibliothek ist es möglich, SVG-Bild in Android zu verwenden. Bibliothek wie: svg-androidDynamisch ändern SVG-Bildfarbe in Android

Der Code zu laden SVG-Datei wie unten:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    // Create a new ImageView 
    ImageView imageView = new ImageView(this); 
    // Set the background color to white 
    imageView.setBackgroundColor(Color.WHITE); 
    // Parse the SVG file from the resource 
    SVG svg = SVGParser.getSVGFromResource(getResources(), R.raw.android); 
    // Get a drawable from the parsed SVG and set it as the drawable for the ImageView 
    imageView.setImageDrawable(svg.createPictureDrawable()); 
    // Set the ImageView as the content view for the Activity 
    setContentView(imageView); 
} 

Es funktioniert gut. Ich kann das Bild sehen. Aber jetzt möchte ich die Farbe für das Svg-Bild zur Laufzeit ändern. Dafür habe ich den folgenden Code ausprobiert, wie in der gleichen Projektbeschreibung erwähnt.

// 0xFF9FBF3B is the hex code for the existing Android green, 0xFF1756c9 is the new blue color 
    SVG svg = SVGParser.getSVGFromResource(getResources(), R.raw.android, 0xFF9FBF3B, 0xFF1756c9); 

Aber damit bin ich nicht in der Lage, die Änderung in der Farbe zu sehen. Also würde ich gerne wissen, wie es möglich ist, die Farbe in der Java-Datei dynamisch zu ändern.

+1

Stellen Sie sicher, diese Farbe '0xFF9FBF3B' in Ihrem svg existiert (es nur in einem Texteditor öffnen und für diesen Wert suchen). Beachten Sie, dass die Farbänderung nur ** beim Laden der Datei ** erfolgt, nicht dynamisch. Laden Sie die Datei einfach neu, um die Farbänderung zu übernehmen. –

Antwort

9

Ich habe wo ist das Problem. Das Problem ist mit dem Farbcode, den ich in Svg-Datei verwende. Es ist nicht genau 0xFF9FBF3B aber # 9FBF3B
Aber während Java-Code müssen Sie es mit den ARGB-Wert (z 0xFF9FBF3B) schreiben. Ich habe es aktualisiert und es funktioniert jetzt gut. Ich kann die Farbe der SVG-Datei mit dem gleichen Code ändern.

Ich hoffe, dass dies auch anderen helfen wird, den tatsächlichen Fall zu identifizieren, während die Farbe des SVG-Bildes zur Laufzeit geändert wird.

16

Ich weiß, es ist etwas spät, aber ich hatte auch dieses Problem und war in der Lage, dieses Problem mit der setColorFilter(int color, PorterDuff.Mode mode) Methode zu beheben.

Beispiel:

imageView.setColorFilter(getResources().getColor(android.R.color.black), PorterDuff.Mode.SRC_IN);