记一次安卓适配的解决
来源:互联网 发布:linux中sed命令详解 编辑:程序博客网 时间:2024/06/17 06:08
记一次安卓适配的解决
众所周知,安卓相比ios麻烦的地方主要是由于版本以及各厂商深度定制带来的适配问题,这里就记录一次解决同一个网页,ios和android显示位置不一致问题的经历。
这里的位置不一致指的是同一个dialog在ios上弹出在一个输入框(输入框是网页里面的控件)正下方,而android则会遮住输入框,导致无法看见自己输入的内容。
导致这一原因的因素有以下三个,状态栏的高度,webview距离状态栏的高度以及网页的设备像素比(devicePixelRatio),其中devicePixelRatio是我之前的知识盲点,今天也主要是为了记录这个只是缺口。
为了完整性,这里也给出状态栏高度的获取方式,如下:
Rect outRect = new Rect(); this.getWindow().getDecorView().getWindowVisibleDisplayFrame(outRect);//this是当前的activity对象 int statusBarHeight = outRect.top;//得到状态栏高度
然后webview距离状态栏的高度:webview.getTop();
最后来说今天的主角:设备像素比,在页面中可以以window.devicePixelRatio获取得到,大多数webkit内核浏览器和opera都支持这个属性,不过麻烦的是他们的值很多都不一样。
来看下定义:
window.devicePixelRatio是设备上物理像素和设备独立像素(device-independent pixels (dip),就是css像素)的比例。
公式表示就是:window.devicePixelRatio = 物理像素 / dip
这之后,本菜鸟去翻阅了个大神的博客,看的云里雾里的,到最后也只是知道devicePixelRatio这个值是可以用来缩放的,于是我大胆猜测,我最后需要的dialog弹出的位置坐标 =
webview.getTop() + 状态栏高度 + 网页返回的值*devicePixelRatio。
最后我的猜想得到了验证,但是原理上还是有点懵逼,再次跪求哪位大神看到了能给讲解下。
最后分享下讲这个概念讲的比较深的文章设备像素比devicePixelRatio简单介绍
- 记一次安卓适配的解决
- 记一次网络故障的解决
- 记一次PermGen持续增长的解决过程
- 记一次PermGen持续增长的解决过程
- 一次网络故障的解决
- 一次手机问题的解决
- 一次网络故障的解决日志
- 一次Link2001错误的解决
- 记一次死锁问题的排查和解决
- 记一次发布网站80端口无法访问的解决历程
- 记一次mongodb CPU飙升100%的解决
- 记一次现场SDE无法启动的解决
- 记一次Chrome 错误“net::ERR_INCOMPLETE_CHUNKED_ENCODING”的解决经历
- 记一次rsyslog日志记录失败的解决过程
- 记,一次vivado_hls使用gcc编译错误的解决
- 记一次Redhat7无法正常开机的解决过程
- 记一次bug解决过程
- 记,一次URL乱码解决
- 区间相交问题
- modCount的作用
- PDF转HTML常用方法分享
- 微信小程序开发遇到的坑
- 15.linux内存管理概括
- 记一次安卓适配的解决
- Spring 2.5配置文件详解
- spark将数据写入hbase以及从hbase读取数据
- JAVA中常见的四种排序--冒泡排序、选择排序、插入排序和快速排序 详解
- c语言 母串和子串的匹配问题
- 标签中文本某些字符替换(字符转换)
- SSM中Spring自带的任务定时器中Cron规则的配置
- Eclipse 新建Maven project select an Archetype这一步卡死
- redis cluster && Redis 作 mysql 的缓存服务器