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;
}
}
分享到:
相关推荐
然而,由于不同设备的屏幕尺寸和分辨率各异,如何让网页在WebView中实现良好的自适应性是开发者常常面临的问题。本篇文章将深入探讨如何处理"webview自适应屏幕",特别是针对图片和表格过大导致超出屏幕的情况。 ...
在`WebViewClient`中,我们可以监听页面的加载状态,但默认情况下,Webview会处理所有的触摸事件。为了拦截滑动事件,我们需要覆盖`shouldOverrideUrlLoading()`方法,并在其中添加滑动手势监听器。 ```java ...
正确设置`viewport`可以帮助页面自适应不同分辨率和屏幕尺寸的设备,提高用户体验。 **二、Android Webview** `Android Webview` 是Android SDK提供的一种组件,它基于Chromium内核,可以在Android应用内部加载和...
在高分辨率的设备上,WebView可能为了适应屏幕尺寸,会自动进行缩放操作。这通常是因为WebView的默认设置导致的,尤其是WebSettings中的相关配置。WebSettings是用于控制WebView行为的一个类,其中包含了多种设置...
这里根据设备的像素密度设置了不同的缩放级别,以适应不同分辨率的屏幕。 最后,如果网页的高度是固定的,例如960像素,我们可以使用`setInitialScale`来设置初始缩放比例,以实现全屏显示: ```java int ...
对于手机适配问题,WebView需要处理不同屏幕尺寸和分辨率。可以通过设置WebSettings的缩放功能来改善用户体验: ```java webView.getSettings().setUseWideViewPort(true); // 自适应屏幕宽度 webView.getSettings()...
总之,通过合理使用`viewport`、CSS媒体查询以及JavaScript,我们可以有效地解决`WebView`加载HTML5页面在多分辨率Android设备上的适配问题,从而提供一致且优质的用户体验。在实际开发中,应根据项目需求和目标用户...
在360°全景展示中,最常用的是`<img>`标签配合`srcset`属性或`<picture>`标签来处理不同分辨率和设备的图片。此外,HTML5的`<canvas>`元素可以用于动态渲染全景图,通过JavaScript进行旋转、缩放等交互操作。例如,...
(3)针对页面自适应问题,本文结合渐进增强以及拥抱流式布局的思想,同时研究利用了移动设备的视口特性,实现跨分辨率、跨设备的页面自适应。 (4)针对系统的功能实现问题,通过结合利用原生态框架与HTML5的跨平台...
在移动互联网时代,H5页面的移动端适配成为前端开发中的关键任务,因为各种移动设备的物理分辨率各异。为了确保H5页面在不同设备上展示一致,我们需要理解一些基本概念和技术。 首先,屏幕尺寸是指屏幕对角线的长度...
在Android开发中,可缩放矢量图(SVG)是一种重要的图像格式,它允许开发者创建图形,这些图形在不同分辨率和尺寸的设备上都能保持清晰和高质量。与传统的位图图像(如JPEG或PNG)相比,矢量图不依赖像素,而是基于...
通过在HTML头部添加`<meta>`标签,可以控制页面的初始缩放比例、最大最小缩放比例以及目标设备的屏幕密度。例如: ```html , initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> ``` 5. **CSS控制...
例如,`width=device-width`会让网页宽度等于设备宽度,`user-scalable=no`则禁止用户手动缩放页面。此外,还可以设置初始缩放比例、最小缩放比例、最大缩放比例以及目标设备密度。 在处理多分辨率适配时,CSS媒体...
这个过程需要注意滚动和截图的同步,以及处理好不同设备的分辨率和缩放比例问题。 总结起来,Android应用源码中的屏幕截图和截取网页整页内容主要涉及对Surface和Canvas的操作,以及WebView的滚动和渲染。理解这些...
1. **响应式设计**:jQuery Mobile 1.1.1 采用响应式网页设计,使得网页能够自动适应不同屏幕尺寸和分辨率的设备,包括智能手机、平板电脑和桌面电脑。这通过灵活的布局和媒体查询实现,确保用户在任何设备上都能...
viewport标签中可以设置视窗的宽度、高度、缩放比例以及目标设备密度等,确保网页在不同分辨率的Android设备上都能有良好的用户体验。 构建HTML5应用程序时,开发者可以利用WebView组件在Android设备上加载HTML5...
WebView不仅可以加载网页,还支持JavaScript交互、页面缩放、前进/后退等操作。 5. **网络请求**:为了加载网页,需要处理HTTP请求。Android提供了HttpURLConnection或者第三方库如Volley、OkHttp来完成网络请求。...