DrawableCompat.unwrap no funciona antes de Lollipop

Estoy usando DrawableCompat.wrap para establecer tinte en drawables en pre Lollipop y está funcionando bien. DrawableCompat.unwrap no funciona antes de Lollipop. No puedo obtener el dibujo original antes del tinte.

Por ejemplo:

if (v.isSelected()){ Drawable normalDrawable = getResources().getDrawable(R.drawable.sample); Drawable wrapDrawable = DrawableCompat.wrap(normalDrawable); DrawableCompat.setTint(wrapDrawable, getResources().getColor(R.color.sample_color)); imageButton.setImageDrawable(wrapDrawable); }else{ Drawable normalDrawable = imageButton.getDrawable(); Drawable unwrapDrawable = DrawableCompat.unwrap(normalDrawable); imageButton.setImageDrawable(unwrapDrawable); } 

En los dispositivos pre lollipop DrawableCompact.unwrap devuelve el dibujable con el tinte y no el original

    One Solution collect form web for “DrawableCompat.unwrap no funciona antes de Lollipop”

    Si desea borrar el tinte, llame DrawableCompat.setTintList(drawable, null) .

    Unwrap no es una función destructiva, solo está ahí para que puedas acceder al Drawable original.

    El siguiente es un código de ejemplo :

     Drawable drawable = (Drawable) ContextCompat.getDrawable(getContext(), R.drawable.google_image); if (condition) { drawable = DrawableCompat.wrap(drawable); DrawableCompat.setTint(drawable, ContextCompat.getColor(getContext(), R.color.grey700)); DrawableCompat.setTintMode(drawable, PorterDuff.Mode.SCREEN); mImageView.setImageDrawable(drawable); } else { drawable = DrawableCompat.unwrap(drawable); DrawableCompat.setTintList(drawable, null); mLoginStatusGoogleImageView.setImageDrawable(drawable); } 

    En su caso el código debe ser:

     if (v.isSelected()) { Drawable normalDrawable = getResources().getDrawable(R.drawable.sample); Drawable wrapDrawable = DrawableCompat.wrap(normalDrawable); DrawableCompat.setTint(wrapDrawable, ContextCompat.getColor(getContext(), R.color.sample_color)); DrawableCompat.setTint(wrapDrawable, getResources().getColor(R.color.sample_color)); imageButton.setImageDrawable(wrapDrawable); } else { Drawable normalDrawable = imageButton.getDrawable(); Drawable unwrapDrawable = DrawableCompat.unwrap(normalDrawable); DrawableCompat.setTintList(unwrapDrawable, null); imageButton.setImageDrawable(unwrapDrawable); } 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.