Cómo crear dibujables a partir de recursos

Resuelto User7723337 asked hace 54 años • 9 respuestas

Tengo una imagen res/drawable/test.png(R.drawable.test).
Quiero pasar esta imagen a una función que acepte Drawable, por ejemplo mButton.setCompoundDrawables().

Entonces, ¿cómo puedo convertir un recurso de imagen en Drawable?

User7723337 avatar Jan 01 '70 08:01 User7723337
Aceptado

Tu Actividad debe tener el método getResources. Hacer:

Drawable myIcon = getResources().getDrawable( R.drawable.icon );


A partir de la versión 21 de API, este método está obsoleto y se puede reemplazar con:

Drawable myIcon = AppCompatResources.getDrawable(context, R.drawable.icon);

Si necesita especificar un tema personalizado, se aplicará lo siguiente, pero solo si la API es la versión 21 o superior:

Drawable myIcon =  ResourcesCompat.getDrawable(getResources(), R.drawable.icon, theme);
Jems avatar Jan 27 '2011 15:01 Jems

Este código está en desuso:

Drawable drawable = getResources().getDrawable( R.drawable.icon );

Utilice esto en su lugar:

Drawable drawable = ContextCompat.getDrawable(getApplicationContext(),R.drawable.icon);
daniel kilinskas avatar Aug 20 '2015 13:08 daniel kilinskas

El getDrawable (int id)método está obsoleto a partir de API 22.

En su lugar, deberías utilizar getDrawable (int id, Resources.Theme theme)API 21+.

El código se vería así.

Drawable myDrawable;
if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP){
    myDrawable = context.getResources().getDrawable(id, context.getTheme());
} else {
    myDrawable = context.getResources().getDrawable(id);
}
Chris Stillwell avatar May 01 '2015 15:05 Chris Stillwell