2014-10-29 20 views
7

So che utilizzando la libreria di terze parti, è possibile utilizzare l'immagine SVG in Android. Biblioteca come: svg-androidCambia dinamicamente il colore dell'immagine SVG in Android

Il codice per caricare un'immagine SVG è come qui di seguito:

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); 
} 

Sta funzionando bene. Sono in grado di vedere l'immagine. Ma ora voglio cambiare il colore per l'immagine SVG in fase di esecuzione. Per quello ho provato il codice qui sotto come menzionato nella stessa descrizione del progetto.

// 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); 

Ma con questo non sono in grado di vedere il cambiamento nel colore. Quindi mi piacerebbe sapere come è possibile cambiare il colore in modo dinamico nel file Java.

+1

assicurarsi che questo colore '0xFF9FBF3B' esiste nella vostra svg (basta aprirlo in un editor di testo e la ricerca di questo valore). Tieni presente che il cambio colore avviene solo ** quando carichi il file **, non in modo dinamico. Quindi, basta ricaricare il file per applicare il cambiamento di colore. –

risposta

9

Ho capito dov'è il problema. Il problema è con il codice colore che sto usando nel file SVG. La sua non è esattamente 0xFF9FBF3B ma # 9FBF3B
Ma durante il codice Java si deve scrivere con il valore ARGB (ad esempio 0xFF9FBF3B). L'ho aggiornato e funziona bene ora. Posso in grado di cambiare il colore del file SVG con lo stesso codice.

Spero che questo aiuti anche gli altri a identificare il caso reale cambiando il colore dell'immagine SVG in fase di esecuzione.

16

So che è in ritardo ma ho riscontrato questo problema ed è stato in grado di risolvere il problema utilizzando il metodo setColorFilter(int color, PorterDuff.Mode mode).

Esempio:

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