博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
webview页面随设备分辨率缩放
阅读量:7059 次
发布时间:2019-06-28

本文共 1494 字,大约阅读时间需要 4 分钟。

hot3.png

android客户端常会调用到html页面,给webview页面适配android凌乱的设备带来很大的困难。

可以找到的方法是通过ZoomDensity.setDefaultZoom根据分辨率480宽度为基准缩放。

不过ZoomDensity.setDefaultZoom在2.0以下的平台是无法调用的,需要自己反射调用。

即使是ZoomDensity.setDefaultZoom设置了缩放,但还是会在很多设备无效。经过摸索还需做一些修改:

1,页面head添加

     <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />

 

2,设置字体也按480基准缩放。

 

下面是代码:

 

 

private void setZoom(WebSettings webSettings) {	int screenDensity = getResources().getDisplayMetrics().densityDpi;	String zd = "FAR";	switch (screenDensity) {	case DisplayMetrics.DENSITY_LOW:	    zd = "CLOSE";	    break;	case DisplayMetrics.DENSITY_MEDIUM:	    zd = "MEDIUM";	    break;	}	Class
zoomDensityClass = null; Enum
zoomDensity = null; try { if (zoomDensityClass == null) { zoomDensityClass = Class.forName("android.webkit.WebSettings$ZoomDensity"); } if (zoomDensity == null) { zoomDensity = (Enum
) Enum.valueOf((Class) zoomDensityClass,zd); } Method method = WebSettings.class.getDeclaredMethod( "setDefaultZoom", new Class
[] { zoomDensityClass }); if(method!=null){ method.invoke(webSettings, zoomDensity); } method = WebSettings.class.getDeclaredMethod( "setTextZoom", new Class
[] { int.class }); if(method!=null){ method.invoke(webSettings, 100 * getWindowManager().getDefaultDisplay().getWidth() / 480); } } catch (Exception e) { Log.e(TAG, e.getMessage()); return; } }

转载于:https://my.oschina.net/droidwolf/blog/285438

你可能感兴趣的文章
主从复制模式下跳过错误
查看>>
剑指offer17
查看>>
samba文件共享
查看>>
MySQL专题7之MySQL连接、 MySQL MULL值得处理以及MySQL 正则表达式的使用
查看>>
第二次作业
查看>>
web报表轻松实现数据异常预警功能
查看>>
ASP.NET Core之跨平台的实时性能监控
查看>>
tomcat日志切割
查看>>
iOS CAShapeLayer、CADisplayLink 实现波浪动画效果
查看>>
Shell常用命令
查看>>
python内置函数和序列化
查看>>
web项目显示乱码解决方案整理
查看>>
10.12-10.16 rewrite配置if,break和last的用法,规则,nginx全局变量
查看>>
无root手机版抓android包工具,超好用
查看>>
Python教程-字典(2)
查看>>
CentOS 6.7 安装 Erlang18.1
查看>>
初识linux
查看>>
HAproxy用法深入
查看>>
组合模式
查看>>
简单的DHCP分配,加子网划分实验
查看>>