假设我有以下代码:
int color = tv.getCurrentTextColor();
如何仅更改此颜色的Alpha值?
例如:
如果颜色为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 的方法。 - Igorint
。在Java中,int
无法被设置-你必须创建一个新的。这就是为什么助手只是一堆静态内容的原因。 - Tomint
是原始数据类型,因此当使用int
表示复杂概念(如颜色)时,你不会使用修改引用的API,因为int
显然无法被设置,这就是为什么正如你所说,“没有设置Alpha的方法”。为此,你需要一个包装int
的Color对象,但我们并没有采取这种方式。 - Tom