js 获取android ios开发中 怎么用js获取手机屏幕高度

5被浏览2561分享邀请回答addOnPreDrawListener的这种方式,bug在于若不满足(height != 0)条件,则listener无法被remove, 然后页面永远无法加载完成.
获取webview的高度,如果想早点获取出来,就在onProgressChanged中获取,如果不着急就在onPageFinished中获取.如下,根据业务需求,总有些问题再针对性调整.mWebView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
//加载中获取高度
int height = mBannerWebView.getMeasuredHeight();
if (height & ...) {
//do something
mBannerWebView.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (!loadingFinished) {
redirect =
loadingFinished =
view.loadUrl(url);
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
loadingFinished =
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
if (!redirect) {
loadingFinished =
if (loadingFinished && !redirect) { //加载完毕
//to something , 比如获取高度
redirect =
ref link:0添加评论分享收藏感谢收起ViewTreeObserver viewTreeObserver
= mWebView.getViewTreeObserver();
viewTreeObserver.addOnPreDrawListener(new OnPreDrawListener() {
public boolean onPreDraw() {
int height = mWebView.getMeasuredHeight();
if( height != 0 ){
Toast.makeText(getActivity(), "height:"+height,Toast.LENGTH_SHORT).show();
mWebView.getViewTreeObserver().removeOnPreDrawListener(this);
0添加评论分享收藏感谢收起写回答I need to get an accurate measurement of altitude using GPS only.
I tried Location.getAltitude(), but that is terribly inaccurate.
Any advice?
解决方案 There are two issues with using altitude of a smartphone / tablet GPS:
The altitude is the altitude above the WGS84 reference ellipsoid. It is not the altitude above ground level or sea level. Here is more detail on that: . This er here is a description how to do that by hand: . The web article links to a calculator to get the Geoid h I do not know if there is also a web service available for this computation.
The GPS altitude is terribly inaccurate for relatively cheap GPS receivers. Here is an article on that: . One method to cope with this kind of inaccuracy is to filter the altitude data. I used a circular array data structure to remember the last few (I used 4) altitude readings and compute the average. This sufficed to get a relatively accurate reading of vertical speed for my application.
本文地址: &
我需要得到高度利用GPS的精确测量只。
我试过Location.getAltitude(),但是这是非常不准确的。
有什么建议?
解决方案 有两个问题与使用智能手机/平板电脑的GPS海拔高度:
在海拔的WGS84参考椭球以上的高度。它不是地面水平以上或海平面的高度。下面是关于它的更多细节:/forumsen/topic.asp?TOPIC_ID=10915.这个误差可以被校正;这里是一本介绍如何做到这一点的手:http://www.unavco.org/edu_outreach/tutorial/geoidcorr.html.该网站的文章链接到一个计算器,以获得大地水准面的修正;我不知道是否还有一个Web服务可用于该计算。
的GPS海拔高度是非常不准确相对便宜的GPS接收机。这是上一篇文章:。一种方法来应对这种不精确的是过滤高度数据。我用了一个圆形阵列记住过去的几年(我用4)高度测量并计算平均值。这足以让垂直速度的一个相对准确的读数为我的申请。
本文地址: &
扫一扫关注官方微信本帖子已过去太久远了,不再提供回复功能。(Yunqing, Wang @ BroadVision)总结的。我分享一下。
----------------
在这个日新月异的年代,安卓系统和安卓手机都在快速得发展和更新,于是出现了各种版本的安卓系统和各种配置(屏幕尺寸、屏幕密度、分辨率等)的安卓手机。当一个应用提供一个图片资源时,如果采取一些措施,从视觉角度该图片就会在不同的手机上呈现相同的效果。那么,都有哪些措施,这些措施是如何工作的呢?接下来是笔者对此问题的研究心得,希望对你有所帮助。
u& 首先阐释一些术语和概念
?& 屏幕尺寸(screen size):实际的物理尺寸,屏幕的对角线测量。为了方便,Android把所有的屏幕尺寸分为了4个广义的大小:小、正常、大、更大。
?& 屏幕密度(screen density):屏幕占据的物理区域所含像素的个数,通常被称为dpi(dots per inch)即每英寸的像素点数。
?& 分辨率(resolution):屏幕上物理像素的点数。例如,有一个240px*400px的屏幕,可以理解为在这个屏幕上横着有400条线,每条线上有240个像素点。
?& 像素(px):屏幕上的点。
?& dip(dp):Density-independent pixel---&与密度无关的像素(下面将详细讲解)
u& dpi如何计算
只要我们知道屏幕分辨率、屏幕尺寸(对角线长度),就可以算出相应的屏幕密度,从而根据其范围得出属于那种屏幕密度。
我们可以根据长或者根据宽来计算出dpi,计算公式为:
或者以下方法
以宽为例:
1.比如分辨率为320 × 480,则长宽比为1:1.5
2.比如屏幕尺寸为3.6英寸,则根据勾股定理得出,
宽 = (12.96/3.25)1/2&= 1.9969英寸
3.宽为320px,分布在1.9969英寸上,因此密度为320/ 1.9969 = 160.2467
4.因此此密度约为mdpi的密度
u& 决定屏幕清晰度的是什么?
常见的位图的最小组成单位是像素,那么单位物理长度内的像素数越多,图像就会越清晰。很多人都说跟屏幕大小没直接关系,因为还有分辨率,可是如果一个屏幕的分辨率很大,但屏幕也非常的大,那么单位长度内的像素数不一定很大。所以决定屏幕清晰度的是单位物理长度的像素数,也就是上面所说的屏幕密度。
u& Android设备屏幕尺寸分布
首先看一下各种屏幕的尺寸和屏幕密度划分,下图是各种屏幕尺寸对应的范围:
从上图可以看出,对应normal尺寸的屏幕范围集中在常见的3到5寸屏之间,large尺寸对应的就主要是5到7寸的nottpad之类的设备,例如三星的Note和Nexus7平板等,再网上走就是平板电脑了。接下来是屏幕密度(dpi),需要说明的是,平时所说的屏幕分辨率其实不能作为屏幕适配的依据,应该依据屏幕密度和屏幕尺寸来换算,屏幕密度是指每英寸屏幕内容纳的像素数,屏幕密度从ldpi到xhdpi分别对应为120dpi、160dpi、240dpi、320dpi,屏幕密度越高、分辨率越高、屏幕尺寸越小就产生了视网膜屏幕。
u& dip单位详解
Android规定一个dip的大小相当于160dpi屏幕上的一个像素,它是系统为“中等的”密度屏设定的基准密度,在不同dpi屏幕上dp对应的像素数是不同的。需要时,基于当前屏的实际密度,系统会透明地放缩dip单。dip单位根据公式像素值 = [dip*(dpi/160)](px)(其中px是单位)转化为屏幕像素。根据此公式可以计算出一个dip分别在120dpi、160dpi、240dpi、320dpi屏幕中对应的像素数分别为0.75、1、1.5、2.0,比例为3:4:6:8,如下图。因此,在不同屏幕密度上,以mdpi作为基准,对位图进行3:4:6:8比例的放缩会达到适配的效果。
dip与一般的px不太一样,它是独立于屏幕密度的。什么是独立于密度?
先来说下一般的px,如果将一个相同长宽像素的图片放在不同屏幕密度大小的屏幕中,那么,在低密度屏幕中图片会显示的很大,在高密度屏幕中则会显示的很小;但是,如果使用dip为单位的图片显示的效果则是,屏幕密度越大的手机,图片显示的像素也相应增大,这样在屏幕密度大的手机和屏幕密度小的手机上,图片看上去大小基本相同。有了上文对dip的讲解,是否对这个现象有所理解呢?
&&&&&& 举个例子来说一下:
现在有三个物理长宽分别为3寸、4寸,屏幕密度分别为120dpi、160dpi、240dpi的手机,则三个屏幕的分辨率分别为360px*480px、480px*640px、
将三个手机屏幕的宽分为三等份,则根据dpi的定义,三个屏幕中每等份分别容纳120px、160px、240px。现在假设有一个控件imageview 它的长宽分别为160px、160px,还有一个160px*160px的图片资源,当程序运行时,该图片在三个屏幕上会呈现以下效果:
& & & & & & & & & & & &在这三个屏幕上,图片占据的都是160px*160px的大小范围
如果将imageview的长宽分别改为160dip、160dip,图片将在三个屏幕上呈现以下效果:
上文提到在这三种屏幕密度下一个dip分别对应0.75px、1px、1.5px,所以在三种屏幕上该图片占据120px、160px、240px,各自占屏幕的三分之一,所以看起来是一样大的。
由上文可总结出Android在适配不同屏幕密度时,可以用dip作为控件的单位,视情况放缩dip单位。
当应用没有指出图片对应的控件的大小,Android是如何让图片适配不同屏幕的呢?
在Android2.1之前,开发应用时只有一个放图片资源的drawable文件夹,这样程序在不同屏幕密度的手机上运行时,系统只会从drawable这个文件夹下调图片资源,并且系统会默认认为这个文件夹下的所有资源是为mdpi屏幕提供的,所以在hdpi屏幕上系统会按比例将drawable下的图片扩大为原来的1.5倍,在ldpi屏幕上系统会按比例将drawable下的图片缩小为原来的0.75倍。这样会大大降低页面效果。
在Android2.1以及之后,出现了drawable-ldpi、drawable-mdpi、drawable-hdpi、drawable-xhdpi、drawable-xxhdpi。在这些文件下提供的图片大小最好是3:4:6:8:12。程序在不同的屏幕密度下运行时,会首先去符合当前屏幕密度的文件夹下找对应的资源,如果没有,系统会以最省力为前提去别的文件夹下找对应的资源并对其进行相应的缩放,如果还没有,就回去默认的drawable文件夹下找,然后按照2.1之前的规则缩放。如果还没有找到,应用就会报错或者直接crash掉了。
举个例子:现在有一个ldpi的手机屏幕,有一个应用在其上运行(假如只有ldpi、mdpi、hdpi还有drawable四个存放图片的文件夹),并需要调用一个图片a.png(在下文中用a来代替a.png)。Android系统会经历以下流程:
将hdpi中的图片大小缩小为原来的一半相比将mdpi中的图片大小缩小为原来的3/4,计算机要省力,只需进行简单地右移一位操作。所以系统在ldpi下找不到a的时候会首先去hdpi下去找。当存在xhdpi、xxhdpi时,系统会按相同的规则去调用资源。
&&&&&& Drawable-ldpi 3、Drawable-mdpi& 4、Drawable-hdpi& 6中的3、4、6指的是同一个图片在三个文件夹下的大小之比。
Android开发者在做图片适配时需要注意一下两点
1、盛放图片的控件要用dip单位来定义其长宽。
2、& 最好在ldpi、mdpi、hdpi、xhdpi、xxhdpi文件夹下提供大小比例为3:4:6:8:12的图片。当然如果有质量好的.9.png图片的话,提供一个也可以。
本文参考官方文档:
/guide/practices/screens_support.html
本文已收录于以下专栏:
相关文章推荐
众所周知,Android机型众多,屏幕尺寸、分辨率各有不同。对于Android开发人员来说,如何提高APP中图片对各种机型的适配是基本技能之一。借着项目中遇到的图片适配问题,在总结项目时,就想着顺带把...
Android的屏幕适配一直以来都在折磨着我们Android开发者,本文将结合:
Google的官方权威适配文档郭霖: Android官方提供的支持不同屏幕大小的全部方法Stormzhang...
转载请标明出处:
http://blog.csdn.net/lmj/article/details/;
本文出自:【张鸿洋的博客】
1、概述大家在Andr...
在我们平常开发的过程中在做引导页适配的时候,有时候会犯难,怎么样作图可以将各种不同尺寸分辨率的手机都适配好也就是不变形不拉伸,官方给的说法也只是做多套图去适配不同的分辨率,遇到全屏展示引导这种问题的时...
参考:/kf/698.html
一、多分辨率适配常用目录:
一个好的App必须要支持绝大多数市面上的设备,适配繁多的分辨率一度让我们陷入了...
在这个日新月异的年代,安卓系统和安卓手机都在快速得发展和更新,于是出现了各种版本的安卓系统和各种配置(屏幕尺寸、屏幕密度、分辨率等)的安卓手机。当一个应用提供一个图片资源时,如果采取一些措施,从视觉角...
一些重要概念
首先来看一些相关的概念:
屏幕尺寸:单位为英寸(inch),也就是我们常说的手机屏幕是多少寸。这个尺寸指的是屏幕对角线的长度。
分辨率:屏幕高和宽的像素数, 现在常见...
Android手机适配是非常让人头疼的一件事,尤其是图片,android为了做到是适配提供了很多文件夹来存放不同大小的图片,比如:drawable-ldpi、drawable-mdpi、drawabl...
应用程序图标 (Icon)应当是一个 Alpha 通道透明的32位 PNG 图片。由于安卓设备众多,一个应用程序图标需要设计几种不同大小,如:
LDPI (Low Density Screen,120...
在Android API(12)之前的版本和后来的版本是不一样:
public long getBitmapsize(){
他的最新文章
讲师:董岩
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)}

我要回帖

更多关于 js 获取手机屏幕高度 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信