Android - 仅更改 alpha TextView 的文本

7

假设我有以下代码:

int color = tv.getCurrentTextColor();

如何仅更改此颜色的Alpha值?

例如:

如果颜色为0x00ffffff,如何将其更改为0xffffffff

是否有相应的方法,还是需要进行一些十六进制/整数操作?

1个回答

21
好的,对于你的问题:“如果颜色是0x00ffffff,我该如何将其更改为0xffffffff?”,直接答案就是使用复合位或运算符:color |= 0xff000000;。但我认为,也许有些同事会希望你不要在Android开发的java端做这种事情:因为你有一个很好的辅助类graphics.Color 由Android提供!它在底层执行了完全相同的操作,但真正有助于提高代码的可读性,特别是考虑到Android中的int类型颜色不一定是十六进制值的颜色,而可能还指向color xml资源的任意ID。简直令人生气。例如:
int color = tv.getCurrentTextColor();
int newColor = Color.argb(yourNewAlphaVal, Color.red(color), Color.green(color), Color.blue(color))

不太快,但我猜你可能并不需要它非常快。

当然,这只是一个关于在这里使用什么的个人意见,希望能对你有所帮助!


我已经查看了 graphics.Color。没有设置 Alpha 的方法,只有获取 Alpha 的方法。 - Igor
1
新增API级别1:http://developer.android.com/reference/android/graphics/Color.html#argb(int, int, int, int) - Tom
真的希望这可以帮到你。你不能设置颜色值的原因是它是一个int。在Java中,int无法被设置-你必须创建一个新的。这就是为什么助手只是一堆静态内容的原因。 - Tom
抱歉,之前的“创建”解释很糟糕。你不能“创建”整数。我的意思是,在Java中,int是原始数据类型,因此当使用int表示复杂概念(如颜色)时,你不会使用修改引用的API,因为int显然无法被设置,这就是为什么正如你所说,“没有设置Alpha的方法”。为此,你需要一个包装int的Color对象,但我们并没有采取这种方式。 - Tom
哦,我错过了color方法。那正是我需要的。谢谢。 - Igor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接