studio redondo example boton android

android - redondo - Agregar un filtro de color a un Drawable cambia todos los botones usando el mismo Drawable



shape android studio (1)

Ejemplo que debería funcionar para usted:

Drawable buttonBackground = context.getResources().getDrawable(R.drawable.bg); buttonBackground = buttonBackground.mutate(); //Set your filter here

Tengo una pantalla donde varios Botones usan el mismo fondo Dibujable. Tengo un código reutilizable que uso en varios proyectos para agregar un oyente de OnTouch que agrega un filtro de color gris mientras se toca un botón. Eso generalmente funciona bien, pero en este caso TODOS los botones se tiñen cuando se presiona alguno de ellos.

Veo una explicación en http://developer.android.com/guide/topics/graphics/2d-graphics.html :

Nota: Cada recurso único en su proyecto puede mantener solo un estado, sin importar cuántos objetos diferentes pueda crear una instancia para él. Por ejemplo, si crea una instancia de dos objetos dibujables del mismo recurso de imagen, luego cambia una propiedad (como el alfa) para uno de los objetos dibujables, entonces también afectará al otro.

La solución sugerida es usar un TweenAnimation, que no parece funcionar con los filtros de color.

También vi Android: Clonando un drawable para hacer un StateListDrawable con filtros que sugiere usar drawable.getConstantState (). NewDrawable (). Esto no parece hacer una diferencia. Supongo que mientras se use el mismo archivo de imagen física, todos los Drawables se verán afectados por un cambio a cualquier otro Drawable que use el mismo recurso.

¿Qué solución hay, aparte de crear una segunda imagen de fondo para mostrar el estado presionado? Sería bueno tener una solución programática simple que pueda agregar a mi código y usar en cada proyecto.