Almacenamiento de identificadores R.drawable en matriz XML

Me gustaría almacenar ID de recursos R.drawable.* en forma de R.drawable.* Dentro de una matriz usando un archivo de valores XML, y luego recuperar la matriz en mi actividad.

¿Alguna idea de cómo lograr esto?

Utiliza una matriz arrays.xml en el archivo arrays.xml dentro de su carpeta /res que se ve así:

    @drawable/car_01 @drawable/balloon_random_02 @drawable/dog_03   

Luego, en su actividad, acceda a ellos de la siguiente manera:

 TypedArray imgs = getResources().obtainTypedArray(R.array.random_imgs); // get resource ID by index imgs.getResourceId(i, -1) // or set you ImageView's resource to the id mImgView1.setImageResource(imgs.getResourceId(i, -1)); // recycle the array imgs.recycle(); 

En la carpeta de value crea el nombre de archivo xml , arrays.xml agrega los datos de esta manera

  @drawable/1 @drawable/2 @drawable/3 @drawable/4  

Entonces obténgala a tu código de esta manera

 private TypedArray img; img = getResources().obtainTypedArray(R.array.your_array_name); 

Luego, para usar un Drawable de estos en el img TypedArray por ejemplo, como un background ImageView background use el siguiente código

 ImageView.setBackgroundResource(img.getResourceId(index, defaultValue)); 

donde index es el índice Drawable . defaultValue es un valor que das si no hay ningún elemento en este index

Para obtener más información sobre TypedArray visite este enlace http://developer.android.com/reference/android/content/res/TypedArray.html

Puede usar esto para crear una matriz de otros recursos, como los dibujables. Tenga en cuenta que no se requiere que la matriz sea homogénea, por lo que puede crear una matriz de tipos de recursos mixtos, pero debe conocer qué y dónde están los tipos de datos en la matriz.

     @drawable/home @drawable/settings @drawable/logout   #FFFF0000 #FF00FF00 #FF0000FF   

Y obtenga los recursos en su actividad de esta manera

 Resources res = getResources(); TypedArray icons = res.obtainTypedArray(R.array.icons); Drawable drawable = icons.getDrawable(0); TypedArray colors = res.obtainTypedArray(R.array.colors); int color = colors.getColor(0,0); 

¡¡¡¡¡Disfrutar!!!!!

No puede almacenar matrices en R.drawable hasta donde yo sé.

Lo que puede hacer es crear una matriz en config.xml o strings.xml que mapee una ruta a un recurso dibujable utilizando un recurso de alias .

Vea si esto funciona, y hágame saber si necesita ayuda adicional.

Intereting Posts