`

WebView显示的网页在大分辨率屏下被放大 - 密度惹的祸

阅读更多
例如适合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);


转自:http://univasity.iteye.com/blog/1162609
分享到:
评论
1 楼 梦游的猫 2012-07-26  
今天也被这个问题搞了很久,现在解决了,感谢你的文章

相关推荐

    webview网站全屏显示

    "webview网站全屏显示"这个项目显然关注的是如何利用WebView实现网页的全屏显示,并确保页面能够根据手机屏幕尺寸自适应调整,同时避免在加载网页时跳转到系统浏览器。 1. **WebView基本使用**: - WebView是...

    Android中WebView加载的网页被放大的解决办法

    总之,要解决Android WebView加载网页被放大的问题,关键在于正确配置WebSettings,尤其是`ZoomDensity`属性。通过动态调整这个设置,我们可以使网页在不同密度的设备上呈现理想的显示效果,从而提升用户体验。同时...

    android Webview读取网页里的所有图片,并实现点击放大

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中加载和显示网页内容。当涉及到用户界面交互,特别是展示包含图片的网页时,我们可能需要实现一些额外的功能,比如点击图片放大查看。本篇文章...

    Android中实现WebView点击图片放大显示

    在某些场景下,用户可能需要查看WebView加载的网页中的图片,此时,提供一个点击图片放大显示的功能会大大提升用户体验。本文将详细介绍如何在Android中实现这一功能。 首先,我们需要了解WebView的基本使用。...

    android用WebView显示包含文字和图片的本地网页(支持放大缩小)

    在android的实际开发中有时候我们需要将文字和图片一起显示,可以用TextView和ImageView的组合来实现,其实用网页显示更容易,本文介绍android显示含有图片和文字的本地网页html,hml的方法,并支持放大缩小。

    Android webview加载网页.zip

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序内部加载和显示网页内容,无需跳转到外部浏览器。这个“Android webview加载网页.zip”文件可能包含了一个示例项目或者教程,帮助开发者理解...

    Android中使用WebView显示网页

    本文将深入探讨如何在Android中使用WebView显示网页,并涉及如何打包本地网页、加载Web页面、设置启用JavaScript以及使用缓存等关键知识点。 1. **使用WebView组件** Android中的WebView是Android SDK提供的一种...

    kotlin compose 实现 webView 加载视频,支持Webview 全屏及退出全屏

    kotlin compose 实现 webView 加载视频,支持Webview 全屏及退出全屏; 资料是主要代码,配置操作:1. AndroidManifest 配置 android:hardwareAccelerated ="true" 2. 支持横竖屏旋转 android:windowSoftInputMode=...

    Android中WebView播放网上视频,横竖屏切换

    4. **考虑全屏模式**:如果需要在横屏时全屏显示视频,可以监听WebView的JavaScript事件,通过`WebChromeClient`的`onShowCustomView()`和`onHideCustomView()`方法来控制全屏和退出全屏。 以上就是如何在Android的...

    WebView视频全屏显示demo

    当网页中的视频需要在全屏模式下播放时,我们需要监听WebView内的视频播放事件。可以自定义一个WebViewClient,重写`onShowCustomView`方法来处理全屏请求: ```java webView.setWebViewClient(new WebViewClient...

    android 使用WebView浏览网页

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中内嵌网页内容,实现与网页的交互。这篇博文“android 使用WebView浏览网页”可能是关于如何在Android应用中集成和使用WebView来展示网页内容...

    cocos-win32下实现WebView网页内嵌

    本文将详细介绍如何在Win32环境下利用C++和COM组件DWebBrowserEvents2实现WebView内嵌功能。 首先,`DWebBrowserEvents2`是微软提供的一个接口,它是Internet Explorer(IE)浏览器引擎的核心组件,用于在非IE应用...

    android webview播放网页视频

    这个方法会在Webview需要显示全屏视频时被调用。下面是一个简单的WebChromeClient实现: ```java webView.setWebChromeClient(new WebChromeClient() { @Override public void onShowCustomView(View view, ...

    react-native-android-fullscreen-webview:在Android上支持全屏视频的React Native WebView组件

    默认情况下,React Native随附的WebView组件无法显示全屏。 该软件包实质上复制了现有的Android版WebView,并添加了一些额外的功能来启用全屏视频。 iOS默认情况下支持此行为,因此将仅使用本机iOS WebView。 入门 ...

    android java 通用开发 自适应密度 webview

    8. **自适应密度**:在Android开发中,为了确保应用在不同屏幕分辨率和像素密度的设备上都有良好的显示效果,需要实现自适应密度的策略。这包括使用dp和sp单位代替px,以及适配不同的屏幕尺寸和比例。 9. **WebView...

    QtWebView在线加载网页Demo

    在Windows环境下,Qt提供了良好的支持,包括窗口管理、事件处理、多媒体支持等。开发者可以使用Qt Creator作为集成开发环境,编写、调试和部署Windows应用。对于这个特定的Demo,它可能涉及到特定的Windows API或库...

    [转帖]通过WebView获取访问网页的源代码

    在Android应用开发中,WebView是一个非常重要的组件,它允许我们在应用程序内部加载和显示网页内容。有时,我们可能需要获取用户通过WebView浏览的网页源代码,以便进行进一步的数据分析或者实现特定功能。这篇博客...

    Android WebView 实现缓存网页数据

    在Android开发中,`WebView` 是一个非常重要的组件,它允许开发者在应用程序内嵌入一个浏览器,用于显示网页内容。本篇文章将详细讲解如何利用 `WebView` 实现网页数据的缓存,使得在网络不稳定或者断开的情况下,...

    Android Webview滑动监听

    在Android开发中,Webview是一个非常重要的组件,它允许开发者在原生应用中嵌入网页内容,实现网页与原生应用的交互。本篇将详细讲解如何在Android Webview中实现滑动监听以及图片的放大缩小功能。 首先,我们要...

Global site tag (gtag.js) - Google Analytics