2012-08-29 7 views
6

jestem pobierania obrazu z adresu URL, ale obraz nie zmienił się po zakończeniu pobierania. jestem wprowadzania kodu poniżej, ktoś doświadczył tego samego?Android obraz widok z url

Java plik

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 plik

<?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 plik

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

Co masz na myśli przez „Zmiana URL obrazu nie wyświetlanie obrazu”? Czy możesz to zmienić? –

+0

Czy próbujesz załadować jpg zamiast png? –

+0

Jestem zmiana „http://www.gophoto.it/view.php?i=http://1.bp.blogspot.com/-2LTvCCufBKc/T3L3KgcTj2I/AAAAAAAABbQ/Ki60e1LU9sE/s1600/Sachin%2BTendulkar.png” ten adres URL, ale nie wyświetla obrazu – Kumar

Odpowiedz

17

Proszę użyć poniższego kodu, aby pobrać i wyświetlić obraz w widoku obrazu.

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

Próbuję ten kod, ale nie wyświetla się – Kumar

+0

W logcat wyświetlając ten komunikat08-29 14: 04: 53.046: D/dalvikvm (132): GC_EXPLICIT zwolniony 743 obiektów/42080 bajtów w 163ms 08-29 14: 04: 58.096: D/dalvikvm (266): GC_EXPLICIT zwolnił 362 obiekty/19720 bajtów w 182ms 08-29 14:05:05.196: D/dalvikvm (291): GC_EXPLICIT zwolnił 274 obiektów/12920 bajtów w 76ms 08-29 14: 09: 21.957: D/SntpClient (59): czas żądania nie powiódł się: java.net.SocketException: rodzina adresów nie jest obsługiwana przez protokół – Kumar

+0

proszę mi pomóc kod – Kumar

3

następujący kod do pracy z następującym adresem URL, ale jej nie działa ze problem jest z url.the twój rozmiar obrazu. Spróbuj z anoth er url to zadziała.

+0

imgView.setImageURI (yourURL); yourURL jest typem akceptacji tylko Uri? Tak zmieniłem kod jak Uri uri = Uri.parse (url) ; imgView.setImageURI (uri) ;, nadal nie otrzymuję – Kumar

+0

ok Kumar Mam edytować kod, który to działa.Jeśli obraz przekracza limit bitmapy, nie wyświetli się.Myśl, że nie ma problemu z kodem.Twój problem z Twój obraz –

+0

Dzięki za pomoc kod – Kumar

0

try poniżej kod,

prostu zmienić swój adres URL,

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(); 

zestaw obraz po pobraniu obrazu za pomocą obsługi

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

Nadzieja pomóc ...

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; 
    } 

użycie tego kozy wewnątrz metody pobierania i jeśli prędkość połączenia jest powolny używanie wątku donwload i hanlder aby umieścić obraz ... jak wytłumaczyć @Hiren