У меня есть экран, на котором несколько кнопок используют один и тот же фон Drawable. У меня есть многократно используемый код, который я использую в разных проектах, чтобы добавить слушателя OnTouch, который добавляет серый цветной фильтр при нажатии кнопки. Обычно это работает нормально, но в этом случае ВСЕ кнопки тонируются, когда нажимается какая-либо из них.
Я вижу объяснение в http://developer.android.com/guide/topics/graphics/2d-graphics.html:
Примечание. Каждый уникальный ресурс в вашем проекте может поддерживать только один независимо от того, сколько различных объектов вы можете создать для Это. Например, если вы создаете два объекта Drawable из одного и того же затем измените свойство (например, альфа) для одного из Drawables, то это также повлияет на другое.
Предлагаемое решение - использовать TweenAnimation, который, похоже, не работает с цветными фильтрами.
Я также видел Android: клонирование рисунка, чтобы сделать StateListDrawable с фильтрами, в котором предлагается использовать drawable.getConstantState(). newDrawable(). Кажется, это не имеет значения. Я предполагаю, что до тех пор, пока используется один и тот же файл физического изображения, на все Drawables будет влиять изменение на любой другой Drawable с использованием того же ресурса.
Какое решение существует, кроме создания второго фонового изображения для отображения нажатого состояния? Было бы неплохо иметь простое программное решение, которое я могу добавить к своему коду и использовать в каждом проекте.