WebView的放大与缩小--- 新发现的问题

今天用到了WebView的放大与缩小:

加代码:

wv.getSettings().setBuiltInZoomControls(true); //显示放大缩小 controler
wv.getSettings().setSupportZoom(true); //可以缩放
wv.getSettings().setDefaultZoom(ZoomDensity.CLOSE);//默认缩放模式是 ZoomDensity.MEDIUM

效果就像地图一样,可以通过controller来控制缩放(默认在右下角位置,如果你想改变 controller组件的位置,建议自己单独布局,然后通过wv.setInitialScale方法来实现缩放)


当然,也可以使用:wv.setInitialScale(100); // 100%的比例显示,如果要放大显示,可以改成 200, 250之类的数值就可以了


今天测试

发现问题一:手机上测试,发现想要让其可以放大缩小(像地图一样),即使加上上面的代码,在手机上居然没有效果,在motorola xoom上显示却是有效果的,我晕!



发现问题二,这个方法( wv.setInitialScale(250); )在KindleFire Tablet (对应密码为169)或者 Galaxy Tab (对应密度为240) 上面,实现不了放大的效果,唉,晕死了,做Android开发感觉有点杂乱无章。

令人好生蛋疼!

页面是后端写的,那个公司的人都不知道用html处理一下的。

为什么 motorola xoom以这种方式是可以实现放大的。


查找资料发现,有可通过这样来设置:

通过当前屏幕的密度,动态设置该属性就能适应不同屏幕(当然,默认你的页面是针对160dpi的密度大小设计的):

intscreenDensity= getResources().getDisplayMetrics().densityDpi;

WebSettings.ZoomDensityzoomDensity= WebSettings.ZoomDensity.MEDIUM;

switch(screenDensity){

caseDisplayMetrics.DENSITY_LOW:

zoomDensity = WebSettings.ZoomDensity.CLOSE;

break;

caseDisplayMetrics.DENSITY_MEDIUM:

zoomDensity = WebSettings.ZoomDensity.MEDIUM;

break;

caseDisplayMetrics.DENSITY_HIGH:

zoomDensity = WebSettings.ZoomDensity.FAR;

break;

}

webview.getSettings().setDefaultZoom(zoomDensity);


即可解决。


可是这样的显示效果,客户又不满意,理由是右端留了一小片黑色区域,真要我的命啊。


暂时解决方案,当它属于平板,但又不属于motorolaxoom的时候,

aidHomeWebView.getSettings().setDefaultZoom(ZoomDensity.CLOSE);

不用 setInitialScale这个方法





参考资料:

http://www.iteye.com/topic/1114214



你可能感兴趣的:(webView)