Cambiar temporalmente el color dibujable

En una aplicación que estoy desarrollando, estoy tratando de crear programáticamente ImageButtonuna copia de la seleccionada ImageButton, pero la imagen se colorea de una manera diferente, digamos rojo.

Si uso el PowerDuff.Mode.MULTIPLY:

clonebutton.getDrawable().setColorFilter(0xFFFF0000,Mode.MULTIPLY);

Luego, incluso el original ImageButtoncambia su color a rojo ya que comparten el mismo drawable. ¿Hay alguna manera de aplicar el filtro solo en el botón clonar sin usar dos diferentes drawables? Por ejemplo, ¿es posible de alguna manera poner una capa de color sobre el botón clonar sin editar el drawable?

Actualización configuré el dibujable como mutable:

Drawable d = swipebutton.getDrawable();
d.mutate();
d.setColorFilter(0xFFFF0000,Mode.MULTIPLY);
swipebutton.setImageDrawable(d);

Esto evita que mi botón clonar comparta su estado drawablecon otro views.

Respuesta 1
Drawable buttonBackground = clonebutton.getDrawable();
buttonBackground = buttonBackground.mutate();
buttonBackground.setColorFilter(0xFFFF0000,Mode.MULTIPLY);

Haz esta mutable dibujable. Esta operación no se puede revertir. Se garantiza que un sorteo mutable no compartirá su estado con ningún otro sorteo. Esto es especialmente útil cuando necesita modificar las propiedades de los elementos extraíbles cargados de los recursos. Por defecto, todas las instancias dibujables cargadas desde el mismo recurso comparten un estado común; Si modifica el estado de una instancia, todas las demás recibirán la misma modificación. Llamar a este método en un Drawable mutable no tendrá ningún efecto.

Respuesta: 2

No entendí por qué en este código que calcula las potencias de 2, la e se disminuye dentro del ciclo while: public class Power {public static void main (String [] args) {int e; ...

Estoy usando el siguiente código para enviar datos a un servidor TCP. Supongo que necesito usar socket.shutdownOutput () para indicar correctamente que el cliente ha terminado de enviar la solicitud. Es mi suposición ...

Esto es lo que hago con eclipse: Crear un nuevo proyecto de Papyrus Crear un diagrama de clase en Papyrus Crear un nuevo proyecto vacío EMF Usar el Modelo de generador EMF para convertir mi archivo .uml (creado con ...

Actualmente soy nuevo en Java y no tengo experiencia previa en programación, actualmente estoy tratando de codificar una solución a un problema propuesto durante mi entrevista universitaria :) // Ganador variable de conejo para mantener ...