android html.fromhtml从网上加载图片

时间:2010-01-02 12:06:57

标签: html android uiimageview

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

1 个答案:

答案 0 :(得分:11)

异步图片下载

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

<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使用的三种类型是

  1. Params,参数的类型 执行时发送给任务。
  2. 进度,后台计算期间发布的进度单位的类型。
  3. 结果,背景计算结果的类型。
  4. 所以要替换我们现在可以使用的旧代码

    DownloadImagesTask task1 = new DownloadImagesTask();
    task1.setImageId(R.id.img1);
    task1.execute("http://assets.devx.com/articlefigs/39810_1.jpg");
    

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

    注意:这是基于DevX的Connecting to the web

    <强>参考