Cargar imagen desde URL

He buscado y probado un par de métodos diferentes. Me estoy quedando corto en ambos. Este es mi método actual:

package com.dop.mobilevforum;

import java.io.InputStream;
import java.net.URL;

import android.app.Activity;
import android.content.Context;
import android.content.res.Configuration;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.widget.ImageView;
import android.widget.VideoView;

public class Vforum extends Activity
{
    private String imgPath = "http://mysite.com/mv/vfdemo1/slides/slide1.jpg";

    private ImageView slideHolder;

    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.vforum);

        slideHolder = (ImageView) findViewById(R.id.slideHolder);

        Drawable drawable = LoadImageFromWebOperations(imgPath);
        slideHolder.setImageDrawable(drawable);
    }

    private Drawable LoadImageFromWebOperations(String url)
    {
        try
        {
            InputStream is = (InputStream) new URL(url).getContent();
            Drawable d = Drawable.createFromStream(is, "src name");
            return d;
        } 
        catch (Exception e)
        {
            Log.w("LoadImageFromWebOperations",e.toString());
            return null;
        }
    }
}

el método LoadImageFromWebOperations está devolviendo un mapa de bits, así que sé que esa parte está funcionando. Es el slideHolder.setImageDrawable(drawable); que creo que está fallando. Este es mi XML:

<?xml version="1.0" encoding="UTF-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/mobile_vforum_bg">
    <ImageView 
        android:id="@+id/slideHolder"
        android:layout_width="320px" 
        android:layout_height="240px">
    </ImageView>
</FrameLayout>

¿algunas ideas? Solo aparece una pantalla en negro, sin errores.

preguntado el 16 de mayo de 11 a las 20:05

Un par de proyectos de SO que he visto solo usaban WebView para mostrar imágenes. -

¡usar la vista web fue mucho más fácil! -

2 Respuestas

Tu mejor opción es usar WebView, pero si realmente quieres hacerlo de esta manera, no uses setImageDrawable. Deberías usar setImageBitmap. Si su LoadImageFromWebOperations devuelve un mapa de bits, entonces no debería cambiar nada, pero la función que está utilizando debería funcionar sin problemas.

contestado el 17 de mayo de 11 a las 00:05

Sí, WebView es el camino a seguir. Eso fue demasiado fácil. Además, cuando dije mapa de bits, lo quise decir genéricamente como una imagen. Debería haber sido más claro. De hecho, estaba devolviendo un Drawable. - Ronnie

Tu código funciona, mi querido amigo, tu url no funciona http://mysite.com/mv/vfdemo1/slides/slide1.jpg.

Puede usar esto, funciona al 100%, pero su código también funciona

URL url = new URL("http://variable3.com/files/images/email-sig.jpg");
Bitmap bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
slideHolder.setImageBitmap(bmp);

contestado el 17 de mayo de 11 a las 00:05

Mi URL funciona. Lo cambié porque es información que no quiero que la gente vea. Independientemente, probé su código y no pude hacerlo funcionar. Terminé usando un WebView - Ronnie

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.