今天用到了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