Android:如何以编程方式从URL设置图像到imageview

时间:2017-05-15 04:57:28

标签: android image url bitmap imageview

我有一个来自我的其他API的图片网址。现在我想在加载活动时将其设置为imageview。下面是我如何从其余的api获取bean,然后从中获取URL。

Message message=new Message();
String imageUrl=message.getImageUrl();

我从我的数据库中获取Message对象,并且图像url包含在该Message对象中。

然后我使用Url对象获取该图片网址。

URL url = null;
try {
     url = new URL(imageUrl);
     Bitmap bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
     contentImageView.setImageBitmap(bmp);
} catch (Exception e) {
     e.printStackTrace();
}

我使用上面的代码将图像加载到contentImageView的图像视图对象。

但是我仍然无法将此图像加载到imageview,没有任何内容被加载。

有什么想法吗?

4 个答案:

答案 0 :(得分:10)

最简单的方法是使用像Picasso或Glide这样的东西:

Picasso.with(getContext()).load(imgUrl).fit().into(contentImageView);

你可以在你的gradle中添加picasso库: compile 'com.squareup.picasso:picasso:2.5.2'

答案 1 :(得分:3)

请尝试使用此功能获取bitmap

public Bitmap getBitmapfromUrl(String imageUrl)
{
    try
    {
        URL url = new URL(imageUrl);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setDoInput(true);
        connection.connect();
        InputStream input = connection.getInputStream();
        Bitmap bitmap = BitmapFactory.decodeStream(input);
        return bitmap;

    } catch (Exception e)
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
        return null;

    }
}

答案 2 :(得分:2)

使用Glide或picasa库提高效率

Dependices

compile 'com.github.bumptech.glide:glide:3.7.0'

示例代码

  Glide.with(this)
                .load(url)
                .diskCacheStrategy(DiskCacheStrategy.NONE)
                .skipMemoryCache(true)
                .into(imageview);

参考文献:  Glide官方文档https://github.com/bumptech/glide

答案 3 :(得分:1)

如果你想在没有任何库的情况下这样做:

  1. 如果内存中有位图图像

    setImageBitmap(Bitmap bm)//将位图设置为此ImageView的内容。

  2. 如果您有可绘制文件夹中的图像

    setImageResource(int resId)//将drawable设置为此ImageView的内容。

  3. 参考:https://developer.android.com/reference/android/widget/ImageView.html