2012-02-15 20 views
9

estoy usando una API en mi aplicación para Android que descarga imágenes de la web y muestra una animación de marcador de posición, mientras que las imágenes están descargando (RemoteImageView, parte del paquete de encendido hereAndroid -. Referencia dibujable recurso como un URL

en algunos momentos de la aplicación, lo que necesito para mostrar imágenes de los dibujables de recursos locales y no descargada de la web.

¿es posible acceder a los dibujables recursos locales utilizando una URL?

Respuesta

3

recursos locales de la imagen no no tienen urls, tienen URI. Entonces, si tiene una imagen en dibujable, puede analizar t dobladillo de la identificación del recurso a URI.

Uri uri=Uri.parse("R.drawable.image"); 

Sin embargo, si usted también puede poner sus imágenes en la carpeta de recursos del paquete y acceder a ellos utilizando su dirección URL. La URL de los archivos de imagen sería "file: ///android_asset/image.png" Puede usar cualquiera de las opciones.

+0

Uri.parse dice que R.drawable.image debe ser una Cadena. Eso no puede ser cierto? –

+0

Woops, se olvidó de agregar comillas. Corregido ahora. – noob

+0

No ... ni funciona. Creo que la API está haciendo una conexión a través de URLConnection y tengo que pasarle una representación de cadena de la URL. Uri.parse(). ToString() simplemente devuelve el String original ... y no lo encuentra con el archivo: /// android_asset/.. ruta –

10

La forma de hacerlo:

uso de esta línea "android.resource://[your package]/"+[res id]

Este es un ejemplo

Uri myURI = Uri.parse("android.resource://com.example.project/" + R.drawable.myimage); 

para una cómoda que se puede utilizar como un método:

public static Uri getUrl(int res){ 
    return Uri.parse("android.resource://com.example.project/" + res); 
} 

Advertencia no utilice context.getPackageName() como sustituto del nombre del paquete porque puede devolver un valor nulo.

+0

¿En qué casos devuelve nulo una vez que se ha inicializado la aplicación? Si no lo carga de forma programática, entonces las compilaciones que cambien el paquete romperán el código. –

Cuestiones relacionadas