我已经下载了一个网页 html 和里面的图片。现在,我正在尝试向用户展示它们。我尝试了两种不同的方法,但不确定哪种方法最好。两者都有自己的问题。
首先,我尝试了一个带有以下代码的文本视图:
TextView content = (TextView)findViewById(R.id.article_content);
MyImageGetter mig = new MyImageGetter(this, urlId);
Spanned span = Html.fromHtml(contents, mig, null);
content.setText(span);
我真的很喜欢它的工作原理,除了两个问题。第一个也是最困难的是当一篇文章有很多图像时,我会得到 OutOfMemory fc's。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;
}
}
另一个问题是 textview 根据用户选择和设备方向具有不同的宽度。如果视图中的图像大于 textview 的宽度,它们就会被裁剪。但是,我相信我可以自己解决这个问题而没有太大的困难。自从我尝试先解决内存问题以来,我还没有太努力。但是,非常感谢您提供任何帮助。
我尝试过的另一种方法是 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 的解决方法。
如果我有选择,我真的很喜欢 TextView 方法,因为我更喜欢它的外观而不是 WebView 呈现事物的方式。