Android加载远程图像

时间:2014-04-07 17:02:12

标签: java android

在Android中,以下最简单的方法是什么:

  1. 从远程服务器加载图像。
  2. 在ImageView中显示。
  3. 我正在尝试在ImageView中显示来自网址的图片,我尝试了基于http://developer.android.com/reference/android/widget/ImageView.html#setImageURI(android.net.Uri)的方法,但它似乎无法运行......我已经崩溃了应用程序。< / p>

    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>
    

4 个答案:

答案 0 :(得分: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);
    }
}

我希望这有助于你

答案 1 :(得分:1)

如果您需要在应用中缓存这些图片,也可以尝试使用此功能。

Loopj Image Cache

答案 2 :(得分:0)

你的错误是什么?

好吧,我为名为picasso的图像使用了lib。

您可以使用一行代码将视频添加到视图中:

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

答案 3 :(得分:0)