2012-06-13 51 views
1

我需要能够显示具有缩放和滚动功能的图像。由于ImageView看起来有点乏味,我使用加载本地图像并显示它的WebView来完成它。这是我当前的代码:试图让Android WebView正确缩放

WebView image = (WebView)findViewById(R.id.image); 
    image.getSettings().setBuiltInZoomControls(true); 
    image.getSettings().setLoadWithOverviewMode(true); 
    image.getSettings().setUseWideViewPort(true); 
    image.setInitialScale(40); 
    image.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT)); 
    image.loadUrl("file:///android_asset/image.png"); 

虽然这种加载图像,我不能让它只显示图像。由于setUseWideViewPort(true)使得它可以完全按比例缩放宽度,所以它下面总是有相当数量的空白。

任何允许它只滚动加载的图像的建议?谢谢。我也试过setDefaultZoom,不能让它出去得足够远。

回答

1

我认为在你的setInitialScale方法中使用静态百分比40是正常的,但是,它并没有考虑屏幕密度或每个说的大小。目前,你的40意味着你被缩放到实际尺寸的40%。

想想当你只在PC上的网络浏览器中打开一个图像时,这个图像本质上会以同样的方式回应,并将其放在左上角。是的,您可以使用WebView对其进行缩放,但在这种情况下,为了使其适用于所有平台,您将必须根据屏幕分辨率减去任何边界矩形(与Android相关的顶部和底部)相关来计算缩放因子到图像的实际宽度和高度。

我建议你回到ImageView!

+0

不幸的是,我只是试了一下,我的图片太大,无法放入内存。我不打算进入整个平铺功能来显示它。 这应该是更简单。 – user1132897

+0

太大以适应内存?这甚至没有任何意义,当你将它带入WebView时,它也将整个图像带入内存,并且实际制作一个副本来显示它,就像ImageView一样。那么你的意思是说它太大而不适合记忆? – trumpetlicks

+0

如果我没有错,我认为当你将一个位图加载到imageview中时,Android会以非压缩格式保存它。我不认为Webview会这样做。这就是为什么它能够适应WebView而不是ImageView。 – user1132897