2013-08-05 44 views
7

Nói rằng tôi có mã này:Android - Chỉ thay đổi văn bản TextView alpha của

int color = tv.getCurrentTextColor(); 

Làm thế nào tôi có thể thay đổi chỉ Alpha trên màu này?

Ví dụ:

nếu màu sắc là 0x00ffffff, thế nào tôi sẽ thay đổi nó để 0xffffffff?

Có phương pháp nào cho điều đó hoặc tôi cần thực hiện một số thao tác hex/int không?

Trả lời

20

Vâng, câu trả lời thẳng cho câu hỏi của bạn về "nếu màu là 0x00ffffff, làm cách nào để thay đổi nó thành 0xffffffff?" chỉ cần sử dụng hợp chất bitwise hoặc: color |= 0xff000000;.

Nhưng tôi nghĩ có thể một số đồng nghiệp muốn bạn không làm điều này ở phía java của phát triển Android: bạn có một lớp trợ giúp tuyệt vời được gọi là graphics.Colorprovided by Android! Nó chỉ là những thứ tương tự bên dưới, nhưng thực sự sẽ giúp bạn đọc được mã, đặc biệt là xem xét một màu loại int trong android không nhất thiết phải là giá trị màu hex nhưng cũng có thể trỏ đến một id bản sao của tài nguyên trong color xml. Argh.

Một ví dụ sẽ là:

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

Không nhanh, nhưng tôi đoán bạn không cần nó được.

Tất nhiên, đây là ý kiến ​​cá nhân về những gì cần sử dụng ở đây và tôi hy vọng điều này sẽ hữu ích!

+0

Tôi đã tìm trong 'graphics.Color'. Không có phương pháp để đặt Alpha. Chỉ để có được Alpha. – Igor

+1

Đã thêm API cấp 1: http://developer.android.com/reference/android/graphics/Color.html#argb(int, int, int, int) – Tom

+0

Thực sự hy vọng điều này sẽ hữu ích. Lý do tại sao bạn không thể * đặt * một giá trị màu là nó là một 'int'. 'int' không thể được thiết lập trong java- bạn phải tạo một cái mới. Đó là lý do tại sao người trợ giúp chỉ là một tải của statics. – Tom