Android教程:Webview自适应屏幕

来源:互联网 发布:centos phphub5 编辑:程序博客网 时间:2024/04/28 11:05
 第一种:
    settings.setUseWideViewPort(true);
    settings.setLoadWithOverviewMode(true);
    第二种:用于4.4以下机型
    WebSetting settings = webView.getSettings();
    settings.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
    把所有内容放在webview等宽的一列中。(可能会出现页面中链接失效)
    第三种:
    DisplayMetrics metrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(metrics);
    int mDensity = metrics.densityDpi;
    if (mDensity == 120) {
    settings.setDefaultZoom(ZoomDensity.CLOSE);
    }else if (mDensity == 160) {
    settings.setDefaultZoom(ZoomDensity.MEDIUM);
    }else if (mDensity == 240) {
    settings.setDefaultZoom(ZoomDensity.FAR);
    }
   这方法可以让你的页面适应手机屏幕的分辨率,完整的显示在屏幕上,可以放大缩小。


例如适合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 ;  
}  
webSettings.setDefaultZoom(zoomDensity);
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 投标时措施费忘记套价了怎么办 美团商家更改手机号和银行卡怎么办 淘宝买的衣服颜色发错了怎么办 在淘宝买的衣服颜色不一样怎么办 新买的木柜气味好重怎么办 淘宝店铺动态评分一直很低怎么办? 刚生下来的宝宝睡觉不吃奶怎么办 宝宝吐奶咳嗽了可能被呛到怎么办 床下面的液压支架支撑不了了怎么办 沙发的海绵垫坐着感觉太硬怎么办 修公路占地补偿盖房子房产证怎么办 哺乳期乳房有硬块挤不出来怎么办 老公投的公司倒闭了钱怎么办 小丑鱼老在缸上边游不下去怎么办 海缸养珊瑚又想养蝴蝶鱼怎么办 被几个月的小狗咬了怎么办 木本植物继代长出大量愈伤怎么办 钱兜树叶子发黄掉叶怎么办 手机qq群200人满了怎么办 支票被背书人的章盖浅了怎么办 没病装病的心理病患者怎么办 20多岁被骗40多万怎么办 一个学生上课爱捣乱班级课堂怎么办 军训的时候大姨妈来了怎么办 笔记本连接无线网说链接限制怎么办 12306密码和邮箱都忘了怎么办 烦恼都是自找的新书散页了怎么办 白色衣服被红色衣服染了怎么办 手机微信里面不能拍手功怎么办 肇事逃逸轻伤且对方不私了怎么办 数学差怎么办脑子不好啊数学学不老 手机号丢失微信密码丢失怎么办找回 悦借钱输入五次密码被锁怎么办 生源地助学贷款密码忘了怎么办 生源地助学贷款登录密码忘了怎么办 助学贷款支付宝密码忘了怎么办 微信密码忘记了手机号也换了怎么办 换手机号了微信密码忘记了怎么办 qq密码忘记了手机号也换了怎么办 一年只能修改一次昵称我能怎么办 华为手机的账号和密码丢失怎么办