例如适合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网站全屏显示"这个项目显然关注的是如何利用WebView实现网页的全屏显示,并确保页面能够根据手机屏幕尺寸自适应调整,同时避免在加载网页时跳转到系统浏览器。 1. **WebView基本使用**: - WebView是...
总之,要解决Android WebView加载网页被放大的问题,关键在于正确配置WebSettings,尤其是`ZoomDensity`属性。通过动态调整这个设置,我们可以使网页在不同密度的设备上呈现理想的显示效果,从而提升用户体验。同时...
在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中加载和显示网页内容。当涉及到用户界面交互,特别是展示包含图片的网页时,我们可能需要实现一些额外的功能,比如点击图片放大查看。本篇文章...
在某些场景下,用户可能需要查看WebView加载的网页中的图片,此时,提供一个点击图片放大显示的功能会大大提升用户体验。本文将详细介绍如何在Android中实现这一功能。 首先,我们需要了解WebView的基本使用。...
在android的实际开发中有时候我们需要将文字和图片一起显示,可以用TextView和ImageView的组合来实现,其实用网页显示更容易,本文介绍android显示含有图片和文字的本地网页html,hml的方法,并支持放大缩小。
本教程将详细讲解如何使用WebView播放网络视频,并实现全屏显示,同时解决在5.0及以上系统上的声音问题以及全屏时的声音调整。 ### 1. WebView基础知识 首先,我们需要了解WebView的基本用法。在Android布局XML...
在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序内部加载和显示网页内容,无需跳转到外部浏览器。这个“Android webview加载网页.zip”文件可能包含了一个示例项目或者教程,帮助开发者理解...
本文将深入探讨如何在Android中使用WebView显示网页,并涉及如何打包本地网页、加载Web页面、设置启用JavaScript以及使用缓存等关键知识点。 1. **使用WebView组件** Android中的WebView是Android SDK提供的一种...
在Android应用开发中,WebView是一个非常重要的组件,它允许开发者在应用程序内嵌入网页内容,实现与网页的交互。在一些场景下,我们可能需要在WebView中播放网络视频,例如YouTube、Vimeo等在线视频服务。然而,...
kotlin compose 实现 webView 加载视频,支持Webview 全屏及退出全屏; 资料是主要代码,配置操作:1. AndroidManifest 配置 android:hardwareAccelerated ="true" 2. 支持横竖屏旋转 android:windowSoftInputMode=...
在Android开发中,WebView是一个非常重要的组件,它允许开发者在应用程序内部嵌入网页内容,实现类似浏览器的功能。本文将深入探讨如何实现“WebView视频全屏显示”这一功能,包括视频的显示、全屏切换、设置视频...
在Android开发中,WebView是一个非常重要的组件,它允许开发者在应用程序内部加载和显示网页内容。这个压缩包文件的内容主要涉及到如何使用WebView来在线播放网络视频,并实现全屏功能,同时解决在Android 5.0及以上...
在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中内嵌网页内容,实现与网页的交互。然而,有时我们可能会遇到“替换WebView加载网页失败”的问题,这通常是由于多种原因引起的。以下是一些...
然而,在加载 HTTPS 和 HTTP 网页时,WebView 可能会出现一些问题,本文将详细介绍这两个错误的解决方法。 错误一:加载 HTTPS 请求的网页时,WebView 变成空白页 在 Android 中,当 WebView 加载 HTTPS 请求的...
在Cocos2d-x开发中,将网页内嵌到游戏或应用中是一项常见的需求,这样可以方便地展示HTML内容,实现动态更新或者交互。本文将详细介绍如何在Win32...在实际开发中,还需要注意线程安全、性能优化以及错误处理等问题。
最近在activity嵌套webview显示大量图文发现APP内存一直在涨,没法释放内存,查了很多资料,大概是webview的一个BUG,引用了activity导致内存泄漏,所以就尝试传递getApplicationContext。 1.避免在xml直接写webview...
这个方法会在Webview需要显示全屏视频时被调用。下面是一个简单的WebChromeClient实现: ```java webView.setWebChromeClient(new WebChromeClient() { @Override public void onShowCustomView(View view, ...
8. **自适应密度**:在Android开发中,为了确保应用在不同屏幕分辨率和像素密度的设备上都有良好的显示效果,需要实现自适应密度的策略。这包括使用dp和sp单位代替px,以及适配不同的屏幕尺寸和比例。 9. **WebView...
在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中内嵌网页内容,实现与网页的交互。这篇博文“android 使用WebView浏览网页”可能是关于如何在Android应用中集成和使用WebView来展示网页内容...