@Android display / res / visible en WebView

Estoy lanzando HTML a una vista web para renderizar. En el HTML, necesito cargar una imagen que tengo en /res/drawable .

Tengo /res/drawable/https://stackoverflow.com/questions/2630829/android-display-res-viewable-in-webview/my_image.png y un código como este:

 final WebView browser = (WebView) findViewById(R.id.my_webview); String html = new MyHelper(myObject).getHtml(); browser.loadDataWithBaseURL("", html, "text/html", "UTF-8", ""); 

Donde el String html tiene algo como:

  

Here is the image

La pregunta es, ¿qué debería ser ese atributo src imagen para referirse a la imagen en /res/drawable ?

Esto funcionó en Android 2.2

  

donde q1.png está en la carpeta res / drawable-hdpi

Admito que no sé mucho sobre WebViews / HTML, pero parece que estás tomando la ruta más complicada para esto. Hay una manera fácil de cargar el archivo HTML; póngalo en su carpeta de activos, y luego se lo puede consultar de la siguiente manera.

 WebView webView = new WebView(this); webView.loadUrl("file:///android_asset/index.html"); setContentView(webView); 

Obviamente, su diseño es más complejo ya que tiene más que solo WebView, por lo que no puede usar setContentView() directamente, pero esa es la idea básica. Luego, para hacer referencia a una imagen en ese archivo HTML, utilicé una etiqueta como esta:

  

Eso funciona para ti?

usuario302750,

Tu método es incorrecto res/drawable/banner300.jpg debe ser file:///android_res/drawable/banner300.jpg .

banner300.jpg puede estar en una de las siguientes ubicaciones en su proyecto, y Android cargará automáticamente el correcto para el dispositivo que está utilizando.

  • res/drawable/banner300.jpg
  • res/drawable-ldpi/banner300.jpg
  • res/drawable-mdpi/banner300.jpg
  • res/drawable-hdpi/banner300.jpg
  • res/drawable-xhdpi/banner300.jpg

La carpeta de assets es para recursos generics que no necesita versiones diferentes de. Un ejemplo podría ser una plantilla XSL o algo de esa naturaleza.

MikeNereson, tu respuesta a tu problema también es incorrecta, los recursos dibujables deberían estar contenidos en el directorio res .

Aquí hay un ejemplo de mi propio proyecto. Salí html, exactamente así:

  

Si uso un dispositivo ldpi , obtengo la imagen ldpi , si uso hdpi o mdpi , también obtengo la adecuada para esos. Android resuelve el file:///android_res/drawable/stats_btn.png a uno de los siguientes recursos que tengo en mi proyecto.

  • ./res/drawable-ldpi/stats_btn.png
  • ./res/drawable-hdpi/stats_btn.png
  • ./res/drawable-mdpi/stats_btn.png

De mis pruebas, la ruta, “file: ///android_res/drawable/q1.png” solo funciona con 2.2+. Para 2.1 que da un error de archivo no encontrado. Mover el recurso a activos funcionará, pero eso no es realmente factible si desea utilizar las funciones dibujables (lo que significa que necesitaría una copia de la imagen en cada carpeta …).

Las respuestas que implican URL de archivo: // pueden no funcionar más a partir de Android 4.0. Ver la respuesta a esta pregunta . Una manera que funcionará está en la respuesta aquí .

Tengo exactamente el mismo problema, pero ni colocando el archivo de imagen en res/drawable (que primero tuve que crear, ya tenía drawable-hdpi, -ldpi y -mdpi ya existentes) o usando el file:///asset/ La URL funcionó para mí.

Esto es lo que hago:

Actividad:

  public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mWebView = (WebView) findViewById(R.id.webview); mWebView.getSettings().setJavaScriptEnabled(true); String summary = "
"; mWebView.loadData(summary, "text/html", "utf-8");

Luego, en res/drawable drawable coloqué el banner300.jpg, pero no aparece. ¿Algunas ideas?

Cargue los elementos arrastrables como lo haría en cualquier otro lugar de su código … http://developer.android.com/guide/topics/resources/drawable-resource.html

 Resources res = getResources(); Drawable drawable = res.getDrawable(R.drawable.myimage); 

También @MikeNereson usa Android, solo puede acceder directamente a los archivos sin procesar que se encuentran en el directorio de activos y la tarjeta SD.