2012-08-29 15 views
6

Estoy descargando una imagen de la url, pero la imagen no se cambia una vez que se completa la descarga. Estoy ingresando el código a continuación, ¿alguien experimentó lo mismo?Vista de imagen de Android desde la url

Java archivo

public class MyImgActivity extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    ImageView imgView =(ImageView)findViewById(R.id.imageView1); 
    Drawable drawable = LoadImageFromWebOperations("http://www.gophoto.it/view.php?i=http://1.bp.blogspot.com/-2LTvCCufBKc/T3L3KgcTj2I/AAAAAAAABbQ/Ki60e1LU9sE/s1600/Sachin%2BTendulkar.png"); 

    imgView.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) { 
     System.out.println("Exc="+e); 
     return null; 
     } 
} 
} 

XML archivo

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" > 

<ImageView 
    android:id="@+id/imageView1" 
    android:layout_height="match_parent" 
    android:layout_width="match_parent"></ImageView> 
</LinearLayout> 

Manifest archivo

<uses-permission android:name="android.permission.INTERNET"/> 
+2

¿Qué quiere decir con "cambiar la URL de la imagen que no muestra la imagen"? ¿Puedes reformularlo? –

+0

¿Has intentado cargar jpg en lugar de png? –

+0

Soy un cambio "http://www.gophoto.it/view.php?i=http://1.bp.blogspot.com/-2LTvCCufBKc/T3L3KgcTj2I/AAAAAAAABbQ/Ki60e1LU9sE/s1600/Sachin%2BTendulkar.png" esta URL pero no muestra la imagen – Kumar

Respuesta

17

Utilice el siguiente código para descargar y mostrar la imagen en la vista de imagen.

public class image extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Bitmap bitmap = DownloadImage("http://www.gophoto.it/view.php?i=http://1.bp.blogspot.com/-2LTvCCufBKc/T3L3KgcTj2I/AAAAAAAABbQ/Ki60e1LU9sE/s1600/Sachin%2BTendulkar.png"); 
     ImageView img = (ImageView) findViewById(R.id.img); 
     img.setImageBitmap(bitmap); 
    } 

    private InputStream OpenHttpConnection(String urlString) throws IOException { 
     InputStream in = null; 
     int response = -1; 

     URL url = new URL(urlString); 
     URLConnection conn = url.openConnection(); 

     if (!(conn instanceof HttpURLConnection)) 
      throw new IOException("Not an HTTP connection"); 

     try { 
      HttpURLConnection httpConn = (HttpURLConnection) conn; 
      httpConn.setAllowUserInteraction(false); 
      httpConn.setInstanceFollowRedirects(true); 
      httpConn.setRequestMethod("GET"); 
      httpConn.connect(); 
      response = httpConn.getResponseCode(); 
      if (response == HttpURLConnection.HTTP_OK) { 
       in = httpConn.getInputStream(); 
      } 
     } catch (Exception ex) { 
      throw new IOException("Error connecting"); 
     } 
     return in; 
    } 

    private Bitmap DownloadImage(String URL) { 
     Bitmap bitmap = null; 
     InputStream in = null; 
     try { 
      in = OpenHttpConnection(URL); 
      bitmap = BitmapFactory.decodeStream(in); 
      in.close(); 
     } catch (IOException e1) { 
      // TODO Auto-generated catch block 
      e1.printStackTrace(); 
     } 
     return bitmap; 
    } 
} 
+0

Estoy intentando este código pero no mostrando – Kumar

+0

En logcat mostrando este mensaje08-29 14: 04: 53.046: D/dalvikvm (132): GC_EXPLICIT liberó 743 objetos/42080 bytes en 163ms 08-29 14: 04: 58.096: D/dalvikvm (266): GC_EXPLICIT liberó 362 objetos/19720 bytes en 182ms 08-29 14:05:05.196: D/dalvikvm (291): GC_EXPLICIT liberó 274 objetos/12920 bytes en 76ms 08-29 14: 09: 21.957: D/SntpClient (59): error de solicitud: java.net.SocketException: familia de direcciones no admitida por protocolo – Kumar

+0

por favor ayúdenme un código – Kumar

3

siguiente código de trabajo con el siguiente URL, pero no su trabajo con su problema es con url.the el tamaño de tu imagen. Prueba con anoth er url funcionará.

public class MyImgActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     ImageView imgView =(ImageView)findViewById(R.id.imageView1); 
     URL url = null; 
     Bitmap bmp = null; 
     try { 
      url = new URL("http://www.seobook.com/images/smallfish.jpg"); 
      bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream()); 
     } catch (MalformedURLException e) { 

     }catch (IOException e) { 

     } 
     imgView.setImageBitmap(bmp); 
     } 

    } 
+0

imgView.setImageURI (yourURL); yourURL es el tipo de Uri que solo acepta? Así que cambié el código como Uri uri = Uri.parse (url) ; imgView.setImageURI (uri); todavía no recibe – Kumar

+0

ok Kumar he editado el código que está funcionando. Si su imagen excede el límite del mapa de bits, no se mostrará. Espere que no haya ningún problema con el código. Su problema con su imagen –

+0

Gracias por ayudarme con el código – Kumar

0

intento por debajo de código,

acaba de cambiar su URL a,

URL

onCreate

new Thread(new Runnable() { 

     @Override 
     public void run() { 
      // TODO Auto-generated method stub 
      drawable = LoadImageFromWebOperations("http://1.bp.blogspot.com/-2LTvCCufBKc/T3L3KgcTj2I/AAAAAAAABbQ/Ki60e1LU9sE/s1600/Sachin%2BTendulkar.png"); 
      handler.sendEmptyMessage(0); 
     } 
    }).start(); 

imagen Conjunto después de descargar la imagen usando gestor

Handler handler = new Handler(){ 
    @Override 
    public void handleMessage(android.os.Message msg) { 
     imgView.setImageDrawable(drawable); 
     Log.i("System out","after set the image..."); 
    } 
}; 

Esperanza ayuda que ...

1
try 
    { 

    URL murl = new URL(url) 
    URLConnection ucon = murl.openConnection(); 
    InputStream is = ucon.getInputStream(); 
    Drawable d = Drawable.createFromStream(is, "src name"); 
    return d; 
    }catch (Exception e) { 
    System.out.println("Exc="+e); 
    return null; 
    } 

uso de este cose dentro de su método de descarga y si la velocidad de conexión es el uso de hilo lento para descargar e hanlder para publicar la imagen ... Según lo explicado por @Hiren

Cuestiones relacionadas