【发布时间】:2013-08-06 06:06:19
【问题描述】:
假设我有这个代码:
int color = tv.getCurrentTextColor();
如何仅更改此颜色的 Alpha?
例如:
如果颜色是0x00ffffff,我将如何将其更改为0xffffffff?
有没有一种方法或者我需要做一些十六进制/整数操作?
【问题讨论】:
标签: android colors textview alpha
假设我有这个代码:
int color = tv.getCurrentTextColor();
如何仅更改此颜色的 Alpha?
例如:
如果颜色是0x00ffffff,我将如何将其更改为0xffffffff?
有没有一种方法或者我需要做一些十六进制/整数操作?
【问题讨论】:
标签: android colors textview alpha
嗯,直接回答你的问题 “如果颜色是 0x00ffffff,我将如何将其更改为 0xffffffff?” 以简单地使用复合位或:
color |= 0xff000000;.
但我想可能有些同事宁愿你不要在 Android 开发的 java 端做这种事情:你有一个很棒的帮助类,叫做graphics.Colorprovided by Android!它在下面做同样的事情,但确实有助于您的代码可读性,特别是考虑到 android 中的 int 类型颜色不一定是十六进制颜色值,但也可能指向 @ 中资源的 artbirary id 987654326@xml。啊。
例如:
int color = tv.getCurrentTextColor();
int newColor = Color.argb(yourNewAlphaVal, Color.red(color), Color.green(color), Color.blue(color))
不快,但我猜你不需要它。
当然,这是关于此处使用什么的个人意见,希望对您有所帮助!
【讨论】:
graphics.Color。没有设置Alpha的方法。只为获得Alpha。
int。 ints 不能在 java 中设置 - 你必须创建一个新的。这就是为什么助手只是一个静态负载。
ints 是java中的原始数据类型,所以当使用int 来表示一个复杂的概念时,比如颜色,你不要通过引用修改API,因为当然,整数不能设置,这就是您正确地说的“没有设置Alpha的方法”的原因。为此,您需要一个包装 int 的 Color 对象,而这恰好不是我们所采用的方式。