2

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

4 に答える 4

2

これを同期的に行うのは簡単ですが、UI スレッドをロックしないように非同期的に行う方法はありますか?

それは難しい、おそらく不可能でしょう。すぐに何かを返さなければなりません。それがプレースホルダーであっても、ダウンロードが完了したら、プレースホルダーを置き換える方法という課題があります。ImageView画像のレンダリングにアクセスできないため( がある場合ImageView)、プレースホルダーを置き換える方法がわかりません。

于 2011-02-03T15:32:05.063 に答える
1

AsyncTaskまたはThread/のHandler組み合わせを使用します。

于 2011-02-03T15:23:04.960 に答える
0

非表示のHtml.fromHtmlを使用して、htmlを表示する前にすべてのURLを抽出し、それらのURLをリストに入れ、すべての画像を非同期でダウンロードし、メモリキャッシュに保存してから、ImageGetterを実装して、キーとしてのURLと値としてのドローアブル。

于 2011-03-02T08:13:06.023 に答える
0

画像を非同期にダウンロードしてメモリキャッシュに保存するために、ここにミニライブラリがあります:) https://github.com/koush/UrlImageViewHelper

于 2011-04-19T09:24:46.647 に答える