【发布时间】:2012-06-09 00:07:04
【问题描述】:
我有一个屏幕,其中多个按钮使用相同的背景 Drawable。我在各种项目中使用了可重用的代码来添加一个 OnTouch 侦听器,该侦听器在触摸按钮时添加灰色过滤器。这通常可以正常工作,但在这种情况下,当按下任何按钮时,所有按钮都会着色。
我在http://developer.android.com/guide/topics/graphics/2d-graphics.html看到了解释:
注意:项目中的每个唯一资源只能维护一个 状态,无论您可以实例化多少不同的对象 它。例如,如果您从同一个对象实例化两个 Drawable 对象 图像资源,然后更改其中之一的属性(例如 alpha) Drawables,那么它也会影响其他的。
建议的解决方案是使用 TweenAnimation,它似乎不适用于滤色器。
我还看到了Android: Cloning a drawable in order to make a StateListDrawable with filters,它建议使用 drawable.getConstantState().newDrawable()。这似乎没有什么不同。我猜只要使用相同的物理图像文件,所有 Drawable 都会受到使用相同资源更改任何其他 Drawable 的影响。
除了创建第二个背景图像来显示按下状态之外,还有什么解决方案?如果有一个简单的编程解决方案可以添加到我的代码中并在每个项目中使用,那就太好了。
【问题讨论】:
标签: android