WebView自动缩放本地图像

时间:2011-03-03 20:22:40

标签: android android-webview android-image android-browser

我的问题类似于this one,但又不同,我将发布一个新问题。

我正在编写一个图像查看器,可以从远程服务器下载PNG,将其保存到存储中,然后在WebView中打开它,这样我就可以免费进行多点触控缩放。这些图像通常是文档,因此用户希望能够放大很远。我发送了足够分辨率的图像以启用此功能,但WebView似乎通过将图像缩放到屏幕尺寸来“帮助”我。这意味着我的图像分辨率太低,无法正确放大。

我已经搜索了这个,我发现其他人遇到了similar problem,但我找到的唯一可能解决方案是将图片切割成瓷砖并使用HTML重新组合在视图中加载之前。这看起来像一个kludge,我问StackOverflow hivemind是否有人有办法关闭缩放,或者另一种方法来获得我需要的东西。

初始化WebView的代码:

viewer = (WebView)findViewById(R.id.activity_imageviewer_webview);
viewer.setBackgroundColor(0);
WebSettings settings = viewer.getSettings();
settings.setJavaScriptEnabled(false);
settings.setBuiltInZoomControls(true);
settings.setUseWideViewPort(true);
settings.setLoadWithOverviewMode(true);

将图片加载到WebView

的代码
viewer.loadUrl(Uri.fromFile(imageFile).toString());

2 个答案:

答案 0 :(得分:0)

更改视口属性可能会有所帮助,请查看

<meta name="viewport" ...>

html标题中的元标记

答案 1 :(得分:0)

我们最终通过使用平铺方法来解决这个问题。我们将图像拆分为服务器上的垂直切片,然后将它们发送到客户端使用HTML重新组装,然后将其放入WebView

实际上,它似乎工作得相当好。图形质量肯定更高,人们可以轻松阅读其中的文字。我们看到的唯一一个问题就是平移和缩放的性能受到打击,因为我不知道的原因(仅)在Nexus S上非常糟糕。

在其他内容发生变化之前,我认为如果不编写自定义视图控件,这可能是问题的唯一解决方案。