ralentizar - ¿Cómo configurar la imagen de dibujable dinámicamente en Android?
no puedo entrar a ajustes en mi celular (14)
Estoy almacenando mis imágenes relacionadas con el proyecto en una carpeta dibujable. También estoy almacenando los nombres de las imágenes en una variable de cadena y dinámicamente estoy tratando de establecer esas imágenes a la vista de la imagen. Pero la imagen no se muestra. Por favor ayúdame en este sentido.
Mi código:
int res = getResources().getIdentifier(imagename, "drawable", this.getPackageName());
imageview= (ImageView)findViewById(R.id.imageView);
imageview.setImageResource(res);
En el código anterior, "imagename" es la variable de cadena que contiene el nombre de la imagen.
Gracias por adelantado
A partir de la API 22, getResources().getDrawable()
está en desuso (vea también Android getResources (). GetDrawable () desaprobada API 22 ). Aquí hay una nueva forma de configurar el recurso de imagen dinámicamente:
String resourceId = "@drawable/myResourceName"; // where myResourceName is the name of your resource file, minus the file extension
int imageResource = getResources().getIdentifier(resourceId, null, getPackageName());
Drawable drawable = ContextCompat.getDrawable(this, imageResource); // For API 21+, gets a drawable styled for theme of passed Context
imageview = (ImageView) findViewById(R.id.imageView);
imageview.setImageDrawable(drawable);
Aquí estoy configurando la imagen frnd_inactive
a la imagen
imageview= (ImageView)findViewById(R.id.imageView);
imageview.setImageDrawable(getResources().getDrawable(R.drawable.frnd_inactive));
Esta es la mejor manera que funciona en todos los teléfonos en la actualidad . La mayoría de las respuestas están en desuso o necesitan una API> = 19 o 22. Puede usar el código de fragmento o el código de actividad depende de lo que necesite.
Fragmento
//setting the bitmap from the drawable folder
Bitmap bitmap= BitmapFactory.decodeResource(getActivity().getResources(), R.drawable.my_image);
//set the image to the imageView
imageView.setImageBitmap(bitmap);
Actividad
//setting the bitmap from the drawable folder
Bitmap bitmap= BitmapFactory.decodeResource(MyActivity.this.getResources(), R.drawable.my_image);
//set the image to the imageView
imageView.setImageBitmap(bitmap);
¡Aclamaciones!
Esto funciona bien para mi.
final R.drawable drawableResources = new R.drawable();
final Class<R.drawable> c = R.drawable.class;
final Field[] fields = c.getDeclaredFields();
for (int i=0; i < fields.length;i++)
{
resourceId[i] = fields[i].getInt(drawableResources);
/* till here you get all the images into the int array resourceId.*/
}
imageview= (ImageView)findViewById(R.id.imageView);
if(your condition)
{
imageview.setImageResource(resourceId[any]);
}
Esto me funciona (no use la extensión de la imagen, solo el nombre):
String imagename = "myImage";
int res = getResources().getIdentifier(imagename, "drawable", this.getPackageName());
imageview= (ImageView)findViewById(R.id.imageView);
imageview.setImageResource(res);
Lo primero de tu nombre de imagen es myimage . Entonces, lo que tienes que hacer es ir a Drawable y guardar el nombre de la imagen myimage .
Ahora suponga que solo conoce el nombre de la imagen y necesita acceder a él. Utilice el siguiente fragmento de código para acceder a él,
Lo que hizo es correcto, asegúrese de haber guardado el nombre de la imagen que va a utilizar dentro de la codificación.
public static int getResourceId(Context context, String name, String resourceType) {
return context.getResources().getIdentifier(toResourceString(name), resourceType, context.getPackageName());
}
private static String toResourceString(String name) {
return name.replace("(", "")
.replace(")", "")
.replace(" ", "_")
.replace("-", "_")
.replace("''", "")
.replace("&", "")
.toLowerCase();
}
Además, debe asegurarse de que no haya espacios vacíos ni sensibles a las mayúsculas.
Prueba este código dinámico
String fnm = "cat"; // this is image file name
String PACKAGE_NAME = getApplicationContext().getPackageName();
int imgId = getResources().getIdentifier(PACKAGE_NAME+":drawable/"+fnm , null, null);
System.out.println("IMG ID :: "+imgId);
System.out.println("PACKAGE_NAME :: "+PACKAGE_NAME);
// Bitmap bitmap = BitmapFactory.decodeResource(getResources(),imgId);
your_image_view.setImageBitmap(BitmapFactory.decodeResource(getResources(),imgId));
En el código anterior, necesitará el objeto Image-file-Name y Image-View que ambos tienen .
Prueba esto:
String uri = "@drawable/myresource"; // where myresource (without the extension) is the file
int imageResource = getResources().getIdentifier(uri, null, getPackageName());
imageview= (ImageView)findViewById(R.id.imageView);
Drawable res = getResources().getDrawable(imageResource);
imageView.setImageDrawable(res);
Ver código abajo esto funciona para mí
iv.setImageResource(getResources().getIdentifier(
"imagename", "drawable", "com.package.application"));
getDrawable()
está en desuso, así que prueba esto
imageView.setImageResource(R.drawable.fileName)
getDrawable () está en desuso. ahora puedes usar
imageView.setImageDrawable(ContextCompat.getDrawable(this,R.drawable.msg_status_client_read))
int[] phptr=new int[5];
añadiendo puntero de imagen a la matriz
for(int lv=0;lv<3;lv++)
{
String id="a"+String.valueOf(lv+1);
phptr[lv]= getResources().getIdentifier(id, "drawable", getPackageName());
}
for(int loopvariable=0;loopvariable<3;loopvariable++)
{
et[loopvariable] = findViewById(p[loopvariable]);
}
for(int lv=0;lv<3;lv++)
{
et[k].setImageResource(phptr[k]);
}
imageView.setImageResource(R.drawable.picname);
imageview= (ImageView)findViewById(R.id.imageView);
imageview.setImageResource(R.drawable.mydrawable)