例如适合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)
;
即可解决。
分享到:
相关推荐
WebView加载URL程序,可以在上面学习webview的使用,在进行html加载的时候,进行了代码设置,设置不会转跳浏览器,页面随着手机屏幕自动调整。
在android的实际开发中有时候我们需要将文字和图片一起显示,可以用TextView和ImageView的组合来实现,其实用网页显示更容易,本文介绍android显示含有图片和文字的本地网页html,hml的方法,并支持放大缩小。
Android中实现WebView点击图片放大显示,完整代码demo。
Webview 读取网页 里的 所有图片,并实现点击图片 放大查看 功能, 图片集 观看, 图片缩放
Webview 在线播放网络视频并实现全屏功能,并且适用于5.0以上系统,解决退出声音问题,全屏声音调整问题。
主要介绍了Android中WebView加载的网页被放大的问题的解决办法,非常不错,具有参考借鉴价值,需要的朋友参考下
Android中使用WebView显示网页,详细了解请移步:http://blog.csdn.net/zxc514257857/article/details/70556265
最近在activity嵌套webview显示大量图文发现APP内存一直在涨,没法释放内存,查了很多资料,大概是webview的一个BUG,引用了activity导致内存泄漏,所以就尝试传递getApplicationContext。 1.避免在xml直接写webview...
Android WebView视频显示解决方案,支持WebView视频全屏显示和隐藏,支持设置视频海报,支持设置WebView加载进度View,支持WebView视频翻转
Android webview加载网页
现在需要c#的数据与显示的网页能双向通信 WPF与WebView2之间的相互通信具有以下优点: 灵活性: 双向通信使得本地应用程序能够与网页内容无缝集成,提供丰富的交互体验。 代码复用: 网页开发者可以复用现有的Web...
Android通过JS在线用webview加载PDF文件(无限放大版本),支持webview无限放大
WebView加载网页,有网的情况下加载网页,之后关闭网络并结束进程在打开一样可以看到先前看到过的网页,当点击没打开过的网页是则:链接不存在。
替换WebView加载网页失败
在安卓webview下 html5 的 video 设置autoplay 属性 或在document ready中使用play方法 都不能使它自动播放 只能用webview的onPageFinished方法来解决此问题,代码如下: 代码如下: mPlayer.setWebViewClient(new ...
一个完整的OC与JS交互 实现WebView里面的图片不用每次从网页加载 只需要第一次加载后就缓存 图片点击放大浏览 详细的思路可以参照 https://github.com/HotWordland/WebNewsJSBridgeOC 欢迎star
Android JavaScript打开webview图片、支持放大缩小查看图片
webview显示图片并下载