getresources - openrawresource android




Android getResources(). GetDrawable() en desuso API 22 (8)

Editar: vea mi publicación de blog sobre el tema para obtener una explicación más completa

En su lugar, debe usar el siguiente código de la biblioteca de soporte:

ContextCompat.getDrawable(context, R.drawable.***)

Usar este método es equivalente a llamar:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    return resources.getDrawable(id, context.getTheme());
} else {
    return resources.getDrawable(id);
}

A partir de API 21, debe usar el getDrawable(int, Theme) lugar de getDrawable(int) , ya que le permite obtener un objeto dibujable asociado con un ID de recurso particular para la densidad / tema de pantalla dada. Llamar al método getDrawable(int) desuso es equivalente a llamar a getDrawable(int, null) .

Con la nueva API de Android 22, getResources().getDrawable() ahora está en desuso. Ahora el mejor enfoque es usar solo getDrawable() .

¿Qué cambió?


getResources().getDrawable() quedó en desuso en el nivel 22 de API. Ahora debemos agregar el tema:

getDrawable (int id, Resources.Theme theme) (Agregado en API nivel 21)

Esto es un ejemplo:

myImgView.setImageDrawable(getResources().getDrawable(R.drawable.myimage, getApplicationContext().getTheme()));

Este es un ejemplo de cómo validar para versiones posteriores:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { //>= API 21
     myImgView.setImageDrawable(getResources().getDrawable(R.drawable.myimage, getApplicationContext().getTheme()));
   } else { 
     myImgView.setImageDrawable(getResources().getDrawable(R.drawable.myimage));
}

Build.VERSION_CODES.LOLLIPOP ahora debería cambiarse a BuildVersionCodes.Lollipop, es decir:

 if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop) { this.Control.Background = this.Resources.GetDrawable(Resource.Drawable.AddBorder, Context.Theme); } else { this.Control.Background = this.Resources.GetDrawable(Resource.Drawable.AddBorder); } 

Prueba esto:

public static List<ProductActivity> getCatalog(Resources res){
    if(catalog == null) {
        catalog.add(new Product("Dead or Alive", res
                .getDrawable(R.drawable.product_salmon),
                "Dead or Alive by Tom Clancy with Grant Blackwood", 29.99));
        catalog.add(new Product("Switch", res
                .getDrawable(R.drawable.switchbook),
                "Switch by Chip Heath and Dan Heath", 24.99));
        catalog.add(new Product("Watchmen", res
                .getDrawable(R.drawable.watchmen),
                "Watchmen by Alan Moore and Dave Gibbons", 14.99));
    }
}

Reemplace esta línea: getResources().getDrawable(R.drawable.your_drawable)

con ResourcesCompat.getDrawable(getResources(), R.drawable.your_drawable, null)

EDITAR

ResourcesCompat también está en desuso ahora. Pero puedes usar esto:

ContextCompat.getDrawable(this, R.drawable.your_drawable) (Este es el contexto)

para más detalles siga este enlace: ContextCompat


Si está apuntando a SDK> 21 (lollipop o 5.0) use

marker.setIcon(ResourcesCompat.getDrawable(getResources(), R.drawable.miubicacion, null));

Ver documentos


Tiene algunas opciones para manejar este desuso de la manera correcta (y a prueba de futuro ), dependiendo del tipo de dibujo que esté cargando:

A) dibujables con atributos de tema

ContextCompat.getDrawable(getActivity(), R.drawable.name);

Obtendrá un Drawable con estilo según lo indique su tema Actividad. Esto es probablemente lo que necesitas.

B) dibujables sin atributos de tema

ResourcesCompat.getDrawable(getResources(), R.drawable.name, null);

Obtendrá su dibujable sin estilo a la antigua usanza. Tenga en cuenta: ResourcesCompat.getDrawable() no está en desuso.

EXTRA) dibujables con atributos de tema de otro tema

ResourcesCompat.getDrawable(getResources(), R.drawable.name, anotherTheme);

en api nivel 14

context.getDrawable(R.drawable.your_drawable_name)




android-5.1.1-lollipop