2015-02-03 20 views
10

io uso questo per mostrare l'immagine svg su imageView, voglio mostrare la modalità bloccata e sbloccata con questo imageView, quando lo stato è bloccato mostra imageView nel filtro di colore in scala di grigi. qualcosa di simile a questo codice su CSS:android: imposta il filtro della scala di grigi a imageView

-webkit-filter: grayscale(100%); opacity: 0.5;

come posso fare questo? Qualcuno può aiutarmi ? grazie

risposta

28

Si dovrebbe essere in grado di fare la scala di grigi dell'immagine e sbiadito utilizzando il seguente:

public static void setLocked(ImageView v) 
{ 
    ColorMatrix matrix = new ColorMatrix(); 
    matrix.setSaturation(0); //0 means grayscale 
    ColorMatrixColorFilter cf = new ColorMatrixColorFilter(matrix); 
    v.setColorFilter(cf); 
    v.setImageAlpha(128); // 128 = 0.5 
} 

e reset utilizzando:

+0

questo lavoro codice su file .png, ma non funziona su Immagini .svg – mahdi

+1

Ah. Temevo che potesse essere il caso. Si può usare la funzione replace-color di svg-android ('getSVGFromInputStream (is, searchColor, replaceColor)'), oppure si può semplicemente rendere il SVG ad un Bitmap e impostare ImageView per usarlo. –

+0

Funziona come una meraviglia! Buona soluzione. – sud007