android html.fromhtml从网页加载图片
答
异步图片下载
首先要做的是确保你请求允许下载清单文件内的图像。
<uses-permission android:name="android.permission.INTERNET" />
然后,要从网上下载图像,我们需要打开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<String, Integer, Bitmap> {
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");
这得到了很多的时间比我的计划。代码不完美,但我希望它对你有所帮助。
注:这是基于Connecting to the web在DevX
参考
你能澄清,如果这是你的问题吗? “我们如何从网上下载图像并将其显示在Android'ImageView'中?” – 2010-01-02 13:29:34
我已经删除了旧的答案,并添加了一个处理异步需求的答案。请让我知道,如果你有任何问题。 – Ally 2010-01-02 21:41:57