Android 两个按钮使用相同的背景图像

Android 两个按钮使用相同的背景图像,android,button,Android,Button,可能重复: 在我的应用程序中,我有两个按钮(btn1和btn2)使用相同的背景图像(pic1),当我改变btn1的背景透明度时。btn2的背景偶尔会改变,而且是随机的。这很奇怪。有人能帮我找到问题吗?谢谢 这是在OnTouch中更改背景的代码。当将一个按钮的背景更改为半透明时,另一个按钮将受到影响 TextView tv = (TextView) v; int color = tv.getCurrentTextColor(); int r = (color) & 0xFF; int g

可能重复:

在我的应用程序中,我有两个按钮(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));

如何避免它们相互影响?

如何准确设置透明度

也许我把这个问题解错了,但下面是:

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


因此,如果您试图执行.getBackground().setAlpha(),则应改为执行.getBackground().mutate().setAlpha(alpha)。(请注意,每次调用mutate()不会对性能造成太大影响(开销很小),因为一旦drawable变为mutate,mutate()方法将不起任何作用)

为什么不在触摸屏上使用选择器来更改背景?能否显示设置每个选项的onTouchListener的代码?