2013-08-05 20 views
7

說我有這樣的代碼:Android的 - 只更改字母的TextView的文本

int color = tv.getCurrentTextColor(); 

我怎麼會在這個顏色只改變阿爾法?

例如:

如果顏色是0x00ffffff,我將如何將其更改爲0xffffffff

有沒有一種方法,或者我需要做一些十六進制/ int操作?

回答

20

那麼,直接回答你的問題「如果顏色是0x00ffffff,我將如何將其更改爲0xffffffff?」只需使用複合按位或: color |= 0xff000000;

但我估計也許有些同事寧願你沒有在Android開發的java端做這樣的事情:你有一個很棒的幫助類叫做graphics.Colorprovided by Android!它只是在下面做同樣的事情,但真的會幫助你的代碼可讀性,特別是考慮到Android中的int類型的顏色不一定是十六進制顏色值,但也可以指向color xml中的資源的artbirary id。哎呀。

的例如是:

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

並不快,但我猜你並不需要它的人。

當然,這是一個關於在這裏使用什麼的個人意見,我希望這有助於!

+0

我已經看過'graphics.Color'。沒有方法設置Alpha。只有得到阿爾法。 – Igor

+1

添加API級別1:http://developer.android.com/reference/android/graphics/Color.html#argb(int,int,int,int) – Tom

+0

真的希望這有助於。你不能*設置*顏色值的原因是它是一個'int'。 'int's不能在java中設置 - 你必須創建一個新的。這就是幫助者只是靜態負載的原因。 – Tom