如何在Android中通过URL加载ImageView?

如何在ImageView使用URL引用的ImageView


从Android开发者:

// show The Image in a ImageView
new DownloadImageTask((ImageView) findViewById(R.id.imageView1))
            .execute("http://java.sogeti.nl/JavaBlog/wp-content/uploads/2009/04/android_icon_256.png");

public void onClick(View v) {
    startActivity(new Intent(this, IndexActivity.class));
    finish();

}

private 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);
        } catch (Exception e) {
            Log.e("Error", e.getMessage());
            e.printStackTrace();
        }
        return mIcon11;
    }

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

确保您在AndroidManifest.xml设置了以下权限来访问互联网。

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

你必须首先下载图像

public static Bitmap loadBitmap(String url) {
    Bitmap bitmap = null;
    InputStream in = null;
    BufferedOutputStream out = null;

    try {
        in = new BufferedInputStream(new URL(url).openStream(), IO_BUFFER_SIZE);

        final ByteArrayOutputStream dataStream = new ByteArrayOutputStream();
        out = new BufferedOutputStream(dataStream, IO_BUFFER_SIZE);
        copy(in, out);
        out.flush();

        final byte[] data = dataStream.toByteArray();
        BitmapFactory.Options options = new BitmapFactory.Options();
        //options.inSampleSize = 1;

        bitmap = BitmapFactory.decodeByteArray(data, 0, data.length,options);
    } catch (IOException e) {
        Log.e(TAG, "Could not load Bitmap from: " + url);
    } finally {
        closeStream(in);
        closeStream(out);
    }

    return bitmap;
}

然后使用Imageview.setImageBitmap将位图设置到ImageView中


1. 毕加索允许在应用程序中轻松加载图像 - 通常只需一行代码!

使用Gradle:

implementation 'com.squareup.picasso:picasso:2.71828'

只需一行代码!

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

Android上图像加载的许多常见缺陷都是由毕加索自动处理的

  • 处理ImageView回收并在适配器中下载取消。
  • 复杂的图像转换与最小的内存使用。
  • 自动内存和磁盘缓存。
  • 在这里输入图像描述

    2. 滑翔 Android的图像加载和缓存库专注于平滑滚动

    使用Gradle:

    repositories {
      mavenCentral() // jcenter() works as well because it pulls from Maven Central
    }
    
    dependencies {
      compile 'com.github.bumptech.glide:glide:3.7.0'
      compile 'com.android.support:support-v4:19.1.0'
    }
    

    //对于一个简单的视图:

    @Override public void onCreate(Bundle savedInstanceState) {
      ...
      ImageView imageView = (ImageView) findViewById(R.id.my_image_view);
    
      Glide.with(this).load("http://i.imgur.com/DvpvklR.png").into(imageView);
    }
    

    //对于一个简单的图片列表:

     @Override public View getView(int position, View recycled, ViewGroup container) {
          final ImageView myImageView;
          if (recycled == null) {
            myImageView = (ImageView) inflater.inflate(R.layout.my_image_view, container, false);
          } else {
            myImageView = (ImageView) recycled;
          }
    
          String url = myUrls.get(position);
    
          Glide
            .with(myFragment)
            .load(url)
            .centerCrop()
            .placeholder(R.drawable.loading_spinner)
            .crossFade()
            .into(myImageView);
    
          return myImageView;
    }
    
    链接地址: http://www.djcxy.com/p/31443.html

    上一篇: How to load an ImageView by URL in Android?

    下一篇: Getting Error on ripple drawable