0

可能重复:
我有两个按钮:“btn1,btn2”,当我更改 btn1 alpha 的背景时,btn2 会随机变化

在我的应用程序中,我有两个按钮(btn1 和 btn2)使用相同的背景图像(pic1),当我更改 btn1 的背景透明时。btn2 的背景偶尔会发生变化,而且是随机的。这很奇怪。谁能帮我找到问题?谢谢。

这是更改背景的代码。OnTouch当将一个按钮的背景更改为半透明时,另一个会受到影响。

TextView tv = (TextView) v;
int color = tv.getCurrentTextColor();
int r = (color) & 0xFF;
int g = (color >> 8) & 0xFF;
int b = (color >> 16) & 0xFF;
int a = (color >> 24) & 0xFF;
tv.setTextColor(Color.argb(50, r, g, b));

如何避免它们相互影响?

4

1 回答 1

0

你究竟是如何设置透明度的?

也许我理解错误的问题,但这里是:

android中相同图像资源的drawable共享状态以进行优化。这意味着,当您更改一个可绘制对象的 alpha 时,它会更改共享相同状态(指向同一资源)的所有可绘制对象的 alpha。为避免此类行为,您可以在可绘制对象上调用 .mutate() 方法以将此可绘制对象状态与其他状态分开。

因此,如果尝试执行 .getBackground().setAlpha(),则应改为执行 .getBackground().mutate().setAlpha(alpha)。(请注意,每次调用 mutate() 不会对性能造成太大影响(微不足道的开销),因为一旦 drawable 变得可变, mutate() 方法什么也不做)

于 2012-11-22T08:57:33.280 回答