ウェブページの html とその中の画像をダウンロードしました。今、私はそれらをユーザーに表示しようとしています。2 つの異なる方法を試しましたが、どちらを使用するのが最適かわかりません。どちらにも問題があります。
まず、次のコードでテキスト ビューを試しました。
TextView content = (TextView)findViewById(R.id.article_content);
MyImageGetter mig = new MyImageGetter(this, urlId);
Spanned span = Html.fromHtml(contents, mig, null);
content.setText(span);
2つの問題を除いて、これがどのように機能するかが本当に気に入っています。最初の、そして最も難しいのは、記事にたくさんの画像が含まれている場合です。私は OutOfMemory fc を取得します。MyImageGetter コードは次のとおりです。
public class MyImageGetter implements Html.ImageGetter{
String urlId = null;
Context c = null;
public MyImageGetter(ArticleViewer articleViewer, String urlId2) {
c = articleViewer;
urlId = urlId2;
}
public Drawable getDrawable(String source) {
String[] brokenUrl = source.split("/");
String imgName = brokenUrl[brokenUrl.length-1];
File image = new File("/data/data/com.that1dev.RibbonReader/Offline/" + urlId + "/" + imgName);
Log.w("MyApp", image.getAbsolutePath());
Bitmap bm = BitmapFactory.decodeFile(image.getAbsolutePath());
Drawable d = new BitmapDrawable(c.getResources(), bm);
d.setBounds(0,0, d.getIntrinsicWidth(),d.getIntrinsicHeight());
return d;
}
}
もう 1 つの問題は、ユーザーの選択とデバイスの向きに基づいてテキストビューの幅が異なることです。ビュー内の画像が textview の幅よりも大きい場合、単純にトリミングされます。しかし、私はそれを自分でそれほど難しくなく修正できると信じています. 最初にメモリの問題を修正しようとしているので、まだ一生懸命試していません。ただし、いずれかの支援をいただければ幸いです。
私が試したもう1つの方法は、webviewです。
WebView webContent = (WebView)findViewById(R.id.web_content);
webContent.loadDataWithBaseURL("", contents[1], "text/html", "utf-8", "");
webContent.setBackgroundColor(Color.TRANSPARENT);
残念ながら、これでは、何を試しても背景が白のままで、信じられないほど醜いです。3.0 および 4.0 で機能する回避策が見つからないようです。
選択肢があれば、WebView がレンダリングする方法よりも TextView メソッドの外観を優先したので、TextView メソッドが機能することを本当に望んでいます。