2013-08-05 11 views
7

że mam tego kodu:Android - Zmień tylko tekst alfa TextView za

int color = tv.getCurrentTextColor(); 

Jak bym zmienić tylko Alpha na tym kolorze?

na przykład:

jeśli kolor jest 0x00ffffff, jak chciałbym go zmienić na 0xffffffff?

Czy istnieje metoda na to lub muszę wykonać pewne manipulacje hex/int?

Odpowiedz

20

Cóż, prosta odpowiedź na twoje pytanie o "jeśli kolor to 0x00ffffff, w jaki sposób mogę go zmienić na 0xffffffff?" po prostu użyć związku bitowego lub: color |= 0xff000000;.

Ale liczyć może niektórzy współpracownicy woleliby nie zrobiłeś tego typu rzeczy na java-side rozwoju Android: masz wspaniałą klasę pomocniczą o nazwie graphics.Colorprovided by Android! Pod spodem ma to samo znaczenie, ale naprawdę pomoże w czytelności kodu, szczególnie biorąc pod uwagę, że kolor typu int w systemie android niekoniecznie jest wartością koloru szesnastkowego, ale może również wskazywać na art-biblijny identyfikator zasobu w pliku xml o wartości color. Argh.

np byłoby:

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

Nie szybko, ale zgaduję, że nie trzeba go mieć.

Oczywiście, to jest osobista opinia na temat tego, co tu używać i mam nadzieję, że to pomoże!

+0

Już zajrzałem do 'graphics.Color'. Nie ma metody, aby ustawić Alpha. Tylko po to, aby zdobyć Alphę. – Igor

+1

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

+0

Naprawdę mam nadzieję, że to pomaga. Powodem, dla którego nie możesz * ustawić * wartości koloru jest to, że jest to 'int'. 'int' nie można ustawić w java - musisz utworzyć nowy. Dlatego pomocnik to tylko ładunek statyki. – Tom