异步Html.ImageGetter,用于在TextView中设置多个图像

时间:2011-02-03 15:14:13

标签: java android html android-image

我正在编写一个应用程序,它接受HTML页面并解析它们以在屏幕上显示。具体来说,此应用程序从留言板中提取HTML并列出用户发布的帖子。

问题是帖子中的很多内容都是<img>标签中的图片,因此我需要编写Html.ImageGetter来处理图片的下载。

我的textView.setText()方法如下所示:

myTextView.setText(Html.fromHtml(myText, new ImageGetter() {                 
        @Override
        public Drawable getDrawable(String source) {
        Drawable d;

        // Need to async download image here 

         return d;
        }
    }, null));

同步执行此操作非常简单,但有没有建议的方法异步执行此操作,以便它不会锁定我的UI线程?我还想最终构建这些图像的缓存,但我想,一旦异步下载就在那里,这将非常简单。

4 个答案:

答案 0 :(得分:2)

  

同步执行此操作非常简单,但有没有建议的方法异步执行此操作,以便它不会锁定我的UI线程?

那将是困难的,也许是不可能的。您必须立即返回某些内容。即使这是一个占位符,您仍然面临着在下载完成后如何替换占位符的挑战。由于您无法访问呈现图像的ImageView(如果 ImageView),我不知道您将如何安排替换占位符。

答案 1 :(得分:1)

答案 2 :(得分:0)

如何通过使用不可见的Html.fromHtml在显示html之前提取所有url,将这些url放在列表中,异步下载所有图像,将它们存储在内存缓存中,然后实现ImageGetter来执行缓存使用url作为键,将drawable作为值进行查找。

答案 3 :(得分:0)

用于异步下载图像并将它们存储在内存缓存中,这里有一个迷你库:) https://github.com/koush/UrlImageViewHelper