2014-04-07 90 views
0

在Android中,什麼是以下最簡單的方法:的Android加載遠程圖像

  1. 負載從遠程服務器的圖像。
  2. 將其顯示在ImageView中。

我想在一個ImageView的顯示從URL的形象,我想基於http://developer.android.com/reference/android/widget/ImageView.html#setImageURI(android.net.Uri)這種方法似乎不工作...我已經崩潰的應用程序。

Pics.java

import android.app.Activity; 
import android.net.Uri; 
import android.os.Bundle; 
import android.widget.ImageView; 

public class Pics extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.pics); 

     ImageView imageView = (ImageView) findViewById(R.id.ImageView1); 

     Uri imgUri = Uri.parse("http://www.remoteServer.com/img/disconnect.png"); 
     imageView.setImageURI(null); 
     imageView.setImageURI(imgUri); 
    } 
} 

AndroidManifest.xml中

<activity 
    android:name=".Pics" 
    android:label="test" > 
</activity> 

Pics.xml

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

    <imageview 
     android:id="@+id/ImageView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" > 
    </imageview> 

</LinearLayout> 
+0

不要重新發明輪子。使用畢加索(https://github.com/square/picasso)或UIL(https://github.com/nostra13/Android-Universal-Image-Loader)。您正在從主線程發出網絡請求,這會使應用程序崩潰。 – dnkoutso

回答

0

什麼是你的錯誤?

那麼,我使用圖像庫稱爲picasso

您可以將圖像添加到您的視圖用一行代碼:

Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView); 

如果您在使用列表中的圖像可能是你需要創建一個拇指使用較少的內存:

Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").fit().centerCrop().into(imageView); 
+0

謝謝,但不工作... – comex

1

我認爲最好的方法是異步做到這一點。

我通常在頁面加載時啓動進度指示器,然後觸發異步進程。

在頁面加載

new DownloadImageTask((ImageView)findViewById(R.id.QrCodeImageView)).execute("https://chart.googleapis.com/chart?cht=qr&chs=150x90&chl=HelloWorld"); 

異步過程

class DownloadImageTask extends AsyncTask<String, Void, Bitmap> { 
    ImageView bmImage; 

    public DownloadImageTask(ImageView bmImage) { 
     this.bmImage = bmImage; 
    } 

    protected Bitmap doInBackground(String... urls) { 
     String urldisplay = urls[0]; 
     Bitmap mIcon11 = null; 
     try { 
      InputStream in = new java.net.URL(urldisplay).openStream(); 
      mIcon11 = BitmapFactory.decodeStream(in); 

      ProgressBarQrCode.setVisibility(View.GONE); 
     } catch (Exception e) { 
      Log.e("Error", e.getMessage()); 
      e.printStackTrace(); 
     } 
     return mIcon11; 
    } 

    protected void onPostExecute(Bitmap result) { 
     bmImage.setImageBitmap(result); 
    } 
} 

我希望這可以幫助你

+0

謝謝,但不工作... – comex