html - android html.fromhtml 从网络加载图像

标签 html android uiimageview

我们如何使用 html.fromhtml 从网络加载图像并设置到 imageview 中?

最佳答案

异步图片下载

首先要做的是确保您请求允许下载 list 文件中的图像。

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

然后,要从 Web 下载图像,我们需要打开一个 HTTP 连接,下载并返回图像。这个方法应该放在 Activity 中。

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);

但是,这不是异步的。

通常我们会创建一个线程来做一些后台工作,但是线程不能更新它没有创建的 View 。

为了解决这个问题我们可以使用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. Progress,后台计算时发布的进度单位类型。
  3. Result,后台计算结果的类型。

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

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

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

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

引用资料

关于html - android html.fromhtml 从网络加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1991431/

相关文章:

mysql - 使用 socket.io 在 Node.js 中使用 MySql 数据库记录 HTML5 页面

html - 检查我的 CSS。随机边距

android - 3.2 sdk平台安装问题。 "Done. Nothing was installed"

Android:创建通知 channel 的正确位置

html - 滚动条未显示在高度为 :30px 的文本区域中

jquery - 如何通过向左/向右/顶部/底部滑动来移动 div? (jquery)

android - 在链接到 Jcenter 之前如何在 Bintray 上上传模块?

ios - 检查图像的一部分是否存在于另一个图像 iOS(图像处理)中

ios - swift-无法使用 AutoLayout 在 UIScrollView 中将 UIImageView 居中

ios - 如何为所有分辨率制作全屏图像