职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 375|回复: 1

[问题解决]WebView显示的网页在大分辨率屏下被放大 - 密度惹的祸

[复制链接]
芷馨 发表于 2011-9-7 09:48 | 显示全部楼层 |阅读模式
  
例如适合800px宽度的页面,如果通过WebView在1024px的屏幕宽度下显示时,内容(图片)会被放大,整体页面会超出屏幕。


试了将WebView的settings中的缩放都关闭了也不行。


后来发现了WebSettings.ZoomDensity这个设置,并在文档中找到了以下说明:
Enum for specifying the WebView's desired density. FAR makes 100% looking like in 240dpi MEDIUM makes 100% looking like in 160dpi CLOSE makes 100% looking like in 120dpi


这样就能很好的说明以上问题的原因了,又是密度惹的祸...


默认WebView的ZoomDensity是MEDIUM,对应160dpi。而我之前800px宽度的屏幕对应的是60dpi,1024px宽度的屏幕对应的是240dpi。所以,页面在高分辨率的屏幕上被放大了1.5倍。这个和图片自缩放的机制是一样的。


于是,只要通过当前屏幕的密度,动态设置该属性就能适应不同屏幕(当然,默认你的页面是针对160dpi的密度大小设计的):
int   screenDensity   = getResources().getDisplayMetrics(). densityDpi ;
WebSettings.ZoomDensity   zoomDensity   = WebSettings.ZoomDensity. MEDIUM ;
switch (screenDensity){
case   DisplayMetrics.DENSITY_LOW :
    zoomDensity = WebSettings.ZoomDensity.CLOSE;
      break ;
case   DisplayMetrics.DENSITY_MEDIUM :
    zoomDensity = WebSettings.ZoomDensity.MEDIUM;
      break ;
case   DisplayMetrics.DENSITY_HIGH :
    zoomDensity = WebSettings.ZoomDensity.FAR;
      break ;
}
webview .getSettings().setDefaultZoom(zoomDensity) ;


即可解决。


郁闷小男人 发表于 2011-9-7 09:48 | 显示全部楼层
推荐链接

20-30万急聘多名天才Java/MTA软件工程师
见证又一个准百万富翁的诞生!
3G培训就业月薪平均7K+,不3K就业不花一分钱!

您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-5-4 14:47 , Processed in 0.102298 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表