Android WebView 加载 html页面 实现 不同分辨率 不同 dpi 缩放自适应处理 解决方案
两种情况一起使用 实现 不同分辨率 不同 dpi 缩放自适应处理
//webview 需要配置
mWebView.getWebSetting().setUseWideViewPort(true);//让webview读取网页设置的viewport,pc版网页
1、同分辨率 不同dpi 缩放自适应处理 ( 也可以在android端 注入相关js 代码)
<script type="text/javascript">
<!-- 针对 Android 【不同 dpi】 适配处理 同分辨率 不同 dpi 显示一致 -->
var ua = navigator.userAgent;
if (/Android (\d+\.\d+)/.test(ua)){
<!-- 需要在页面加载时候 生效 才能有效 -->
var devicePixelRatio = window.devicePixelRatio;
var deviceScale = 1/devicePixelRatio;
document.write('<meta name="viewport" content="width=device-width,initial-scale='+deviceScale+',minimum-scale='+deviceScale+',maximum-scale='+deviceScale+',user-scalable=no">');
}
</script>
2、同dpi 不同分辨率 缩放自适应处理
@Override
public void onPageFinished(WebView webView, String url) {
super.onPageFinished(webView, url);
/**
* 针对 web 页面 【不同分辨率】 适配处理 同dpi 不同分辨率 显示一致
* zoom = 100% 分辨率 1920 * 1080 Ui设置设计出来合适的 也是body标签默认未设置zoom属性的或者100% 例子 <body style="zoom: 50%;">
* zoom = 66.67% 分辨率 1280 * 720
* zoom = 71.14% 分辨率 1366 * 768
* zoom = 106.67% 分辨率 2048 * 1152
* zoom = 83.33% 分辨率 1600 * 900
* zoom = 50% 分辨率 960 * 540
*/
float widthPixels = getResources().getDisplayMetrics().widthPixels;
float heightPixels = getResources().getDisplayMetrics().heightPixels;
Log.d("zfq", "widthPixels:" + widthPixels);
Log.d("zfq", "heightPixels:" + heightPixels);
float zoomPercent = widthPixels / 1920 * 100;
Log.d("zfq", "zoomPercent:" + zoomPercent);
String javaScriptInterfaceName_zoomWeb_NeedInjectJsStr =
"javascript:(function(){ document.body.style.zoom='" + zoomPercent + "%'; })()";
mWebView.loadUrl(javaScriptInterfaceName_zoomWeb_NeedInjectJsStr);
}
Android WebView 加载 html页面 实现 不同分辨率 不同 dpi 缩放自适应处理 解决方案的更多相关文章
- Android WebView加载本地html并实现Java与JS交互
最近做的一个项目中,用到自定义地图,将自定义地图转换成html页面,现在需要做的是如何将本地的html加载到android中,并可以实现交互. 相关讲解: 其实webview加载资源的速度并不慢,但是 ...
- 转:Android Webview 加载外部html时选择加载本地的js,css等资源文件
原文地址:http://m.blog.csdn.net/blog/qduningning/43196819 在使用WebView加载网页的时候,有一些固定的资源文件如js的jquery包,css,图片 ...
- Android WebView 加载网页
通过Android 中 WebView 控件加载HTML5 页面,这是实现Android 混合开发的基础. 选择加载的网页可以是本地,也可用使远程的.需要添加访问互联网的权限:<uses-per ...
- Android WebView 加载富文本内容
WebView加载数据的方式有两种: 1. webView.loadUrl(data);//加载url 2. webView.loadDataWithBaseURL(null,data, " ...
- Android使用WebView加载H5页面播放视频音频,退出后还在播放问题解决
Android中经常会使用到WebView来加载H5的页面,如果H5页面中有音频或者视频的播放时,还没播放完就退出界面,这个时候会发现音频或者视频还在后台播放,这就有点一脸懵逼了,下面是解决方案: 方 ...
- android webview 加载本地html 实现 与 java 之间的相互响应
1.布局 <?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:androi ...
- android webview加载网络连接
webview = (WebView) findViewById(R.id.webview); WebSettings webSettings = webview.getSettings(); //设 ...
- Android WebView 加载超长 JS 数据
在之前的文章里面,我总结过WebView如何与网页交互,也就是Java如何和JS交互 —— Android WebView 总结 —— Java和JavaScript交互. 基于这篇文章,我们基本上能 ...
- webview加载本地页面
main.xml中布局webview,activity中设置如下 MyWebView=(WebView)findViewById(R.id.webView1); MyWebView.requestFo ...
- Android webView加载图片显示过大的问题
webview的基本使用流程这里我就不重复说明了,本篇针对的是文章详情加载完成后出现的情况,这里我们使用的方法是:通过js脚本,重置img标签中图片的宽度和高度. 使用步骤: 1.此方法需要使用js, ...
随机推荐
- 从0写一个电话号码管理的C入门项目【适合初学者】
0.前言 上次发了一个嵌入式的学习路线,很多粉丝问我各个阶段的入门项目,其中第二阶段的<基于socket聊天室>写了4篇循序渐进的文章,而第一阶段的<电话号码本管理>也非常想要 ...
- 关于Arrays.asList返回List无法新增和删除?
关于Arrays.asList返回的List无法新增和删除? 这个是在写项目的时候发现的,然后就分析了一下源码,得其内部原理 复现代码示例: public class ArraysAsList { p ...
- esphome esp8266刷写遇到的问题
问题描述: 在尝试打开串口时出现以下错误信息: Failed to execute 'open' on 'SerialPort': Failed to open serial port. 起因: 莫名 ...
- 使用 Portainer CE 管理远程主机的 Docker
Prerequisites 你已经在本地主机安装了 Portainer CE 安装 打开本地主机的 Portainer CE 界面,默认地址为 localhost:9443 在左侧边栏中找到 Envi ...
- LaTeX 编译 acmart 文档报错:No country present for an affiliation.
在编译一篇从 arXiv 下载的文档时遇到如下错误: Class acmart Error: No country present for an affiliation. 有两种解决方案: 将错误降级 ...
- 【爬虫实战】——利用bs4和sqlalchemy操作mysql数据库,实现网站多行数据表格爬取数据
前言 此篇接上一篇的内容,在其基础上爬取网站的多行表格数据,以及把数据写入到mysql数据库中 目录 一.定位表格查找元素 二.提取数据 三.写入mysql数据库 四.附录 一.定位表格查找元素 首先 ...
- RxJS 系列 – Error Handling Operators
前言 前几篇介绍过了 Creation Operators Filter Operators Join Creation Operators 这篇继续介绍 Error Handling Operato ...
- MDC – Text field
前言 Angular Material 只有 Form field, 但 Material Design 有份 Text field 和 Form field, Form field 是给 check ...
- CSS – BEM (Block__Element--Modifier)
前言 BEM 是一种 CSS class 命名规范. 目的是防止大家名字取太短, 不小撞名字后果很麻烦. 参考: Youtube – You Probably Need BEM CSS in Your ...
- Azure – Azure Active Directory
前言 虽然它好像是快过时了, 但目前还得用到. 先不研究新的先. Azure 的 service 如果要通过 API 调用的话, 就需要 Azure Active Directory (Azure A ...