我们怎样才能从web加载图像并将其设置为imageview?

解决方法:

异步图像下载

首先要确保您请求在清单文件中下载图像的权限.

然后,要从Web下载图像,我们需要打开HTTP连接,下载并返回图像.这个方法应该进入活动.

private Bitmap DownloadImage(String URL)

然后我们将下载的图像添加到ImageView

Bitmap bitmap = DownloadImage("http://www.streetcar.org/mim/cable/images/cable-01.jpg");

ImageView img = (ImageView) findViewById(R.id.img);

img.setImageBitmap(bitmap);

但是,这不是异步的.

通常我们会创建一个线程来完成一些后台工作,但线程无法更新它没有创建的视图.

为了解决这个问题,我们可以使用AsyncTask.我编写了这个扩展AsyncTask的小内部类.

class DownloadImagesTask extends AsyncTask {

private int imageViewID;

protected void onPostExecute(Bitmap bitmap1) {

setImage(imageViewID, bitmap1);

}

public void setImageId(int imageViewID) {

this.imageViewID = imageViewID;

}

@Override

protected Bitmap doInBackground(String... url) {

Bitmap bitmap1 =

DownloadImage(url[0]);

return bitmap1;

}

}

AsyncTask使用的三种类型是

> Params,参数的类型

执行时发送给任务.

>进度,后台计算期间发布的进度单元的类型.

>结果,后台计算结果的类型.

所以要替换我们现在可以使用的旧代码

DownloadImagesTask task1 = new DownloadImagesTask();

task1.setImageId(R.id.img1);

task1.execute("http://assets.devx.com/articlefigs/39810_1.jpg");

这比我计划的要长很多.代码不完美,但我希望它对你有所帮助.

参考

标签:android,uiimageview,html

来源: https://codeday.me/bug/20190717/1484893.html

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐