2013-08-05 11 views
7

Dire che ho questo codice:Android - Cambiare solo il testo del TextView alfa

int color = tv.getCurrentTextColor(); 

Come dovrei cambiare solo l'Alpha su questo colore?

Per esempio:

se il colore è 0x00ffffff, come potrei cambiare a 0xffffffff?

Esiste un metodo per questo oppure devo eseguire alcune manipolazioni hex/int?

risposta

20

Bene, la risposta diretta alla tua domanda di "se il colore è 0x00ffffff, come dovrei cambiarlo in 0xffffffff?" per utilizzare semplicemente il bit composto o: color |= 0xff000000;.

Ma forse penso che alcuni colleghi preferirebbero non aver fatto questo tipo di cose sullo sviluppo di Android: avete una meravigliosa classe di supporto chiamata graphics.Colorprovided by Android! Fa proprio le stesse cose al di sotto, ma aiuterà davvero la leggibilità del codice, specialmente considerando che un colore di tipo int in Android non è necessariamente un valore di colore esadecimale ma potrebbe anche puntare a un ID artbirario di una risorsa nel file color xml. Argh.

Un esempio potrebbe essere:

int color = tv.getCurrentTextColor(); 
int newColor = Color.argb(yourNewAlphaVal, Color.red(color), Color.green(color), Color.blue(color)) 

non veloce, ma credo che non è necessario che sia.

Naturalmente, questa è un'opinione personale su cosa usare qui, e spero che questo aiuti!

+0

Ho già cercato in 'graphics.Color'. Non esiste alcun metodo per impostare Alpha. Solo per ottenere Alpha. – Igor

+1

Livello API aggiunto 1: http://developer.android.com/reference/android/graphics/Color.html#argb(int, int, int, int) – Tom

+0

Speriamo davvero che questo aiuti. Il motivo per cui non puoi * impostare * un valore di colore è che è un 'int'. 'int's non può essere impostato in java- devi crearne uno nuovo. Ecco perché l'aiutante è solo un carico di statici. – Tom

Problemi correlati