jq 动态判断设备添加对应meta viewport属性内同

1.常见的单位 dip, dp, px, sp之间的区别:javascript

dip: device independent pixels(设备独立像素). 不一样设备有不一样的显示效果,这个和设备硬件有关,通常咱们为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。
px: pixels(像素). 不一样设备显示效果相同,通常咱们HVGA表明320x480像素,这个用的比较多。
pt: point,是一个标准的长度单位,1pt=1/72英寸,用于印刷业,很是简单易用;
sp: scaled pixels(放大像素). 主要用于字体显示best for textsize,根据 google 的建议,TextView 的字号最好使用 sp 作单位,

Android支持下列全部单位:
px(像素):屏幕上的点。
in(英寸):长度单位。
mm(毫米):长度单位。
pt(磅):1/72英寸。
dp(与密度无关的像素):一种基于屏幕密度的抽象单位。在每英寸160点的显示器上,1dp = 1px。
dip:与dp相同,多用于Android/ophone示例中。
sp(与刻度无关的像素):与dp相似,可是能够根据用户的字体大小首选项进行缩放。
java

 

这些术语都是指屏幕的分辨率。
VGA:Video Graphics Array,即:显示绘图矩阵,至关于640×480 像素;
HVGA:Half-size VGA;即:VGA的一半,分辨率为480×320;
QVGA:Quarter VGA;即:VGA的四分之一,分辨率为320×240;
WVGA:Wide Video Graphics Array;即:扩大的VGA,分辨率为800×480像素;

 

WQVGA:Wide Quarter VGA;即:扩大的QVGA,分辨率比QVGA高,比VGA低,通常是:400×240,480×272;android

 

2.术语和概念
屏幕尺寸
屏幕的物理尺寸,以屏幕的对角线长度做为依据(好比2.8寸,3.5寸)。
简而言之,Android把全部的屏幕尺寸简化为三大类:大,正常,和小。
程序能够针对这三种尺寸的屏幕提供三种不一样的布局方案,而后系统会负责把你的布局方案以合适的方式渲染到对应的屏幕上,这个过程是不须要程序员用代码来干预的。

屏幕长宽比
屏幕的物理长度与物理宽度的比例。程序能够为制定长宽比的屏幕提供制定的素材,只须要用系统提供的资源分类符long和notlong。

分辨率
屏幕上拥有的像素的总数。注意,虽然大部分状况下分辨率都被表示为“宽度×长度”,但分辨率并不意味着屏幕长宽比。在Android系统中,程序通常并不直接处理分辨率。

密度
以屏幕分辨率为基础,沿屏幕长宽方向排列的像素。
密 度较低的屏幕,在长和宽方向都只有比较少的像素,而高密度的屏幕一般则会有不少——甚至会很是很是多——像素排列在同一区域。屏幕的密度是很是重要的,举 个例子,长宽以像素为单位定义的界面元素(好比一个按钮),在低密度的屏幕上会显得很大,但在高密度的屏幕上则会显得很小。

密度无关的像素(DIP)
指一个抽象意义上的像素,程序用它来定义界面元素。它做为一个与实际密度无关的单位,帮助程序员构建一个布局方案(界面元素的宽度,高度,位置)。
一 个与密度无关的像素,在逻辑尺寸上,与一个位于像素密度为160DPI的屏幕上的像素是一致的,这也是Android平台所假定的默认显示设备。在运行的 时候,平台会以目标屏幕的密度做为基准,“透明地”处理全部须要的DIP缩放操做。要把密度无关像素转换为屏幕像素,能够用这样一个简单的公 式:pixels = dips * (density / 160)。举个例子,在DPI为240的屏幕上,1个DIP等于1.5个物理像素。咱们强烈推荐你用DIP来定义你程序的界面布局,由于这样能够保证你的 UI在各类分辨率的屏幕上均可以正常显示。
程序员

 

3.支持的屏幕分辨率范围
1.5及更早版本的Android系统,在设计的时候假定系统只会运行在一种分辨率的设备上——HVGA(320×480)分辨率,尺寸为3.2寸。因为系统只能工做在一种屏幕上,开发人员就能够针对那个屏幕来编写本身的程序,而无需去考虑程序在其余屏幕上的显示问题。
但自从Android 1.6以来,系统引入了对多种尺寸、多种分辨率屏幕的支持,以此知足拥有各类配置的新平台的运行需求。这就意味着开发人员在针对Android 1.6或更新版系统开发程序的时候,须要为本身的程序在多种分辨率的屏幕上良好显示做出额外的设计。
为了简化程序员面在对各类分辨率时的困扰,也为了具有各类分辨率的平台均可以直接运行这些程序,Android平台将全部的屏幕以密度和分辨率为分类方式,各自分红了三类:
·三种主要的尺寸:大,正常,小;
·三种不一样的密度:高(hdpi),中(mdpi)和低(ldpi)。
如 果须要的话,程序能够为各类尺寸的屏幕提供不一样的资源(主要是布局),也能够为各类密度的屏幕提供不一样的资源(主要是位图)。除此之外,程序不须要针对屏 幕的尺寸或者密度做出任何额外的处理。在执行的时候,平台会根据屏幕自己的尺寸与密度特性,自动载入对应的资源,并把它们从逻辑像素(DIP,用于定义界 面布局)转换成屏幕上的物理像素。
下表列出了Android平台支持的屏幕中一些比较经常使用的型号,并显示了系统是如何把它们分类到不一样的屏幕配置里的。有些屏幕分辨率并不在下面的列表上,但系统仍会把它们纳入下列的某一个类型中。
iphone

首先,一块屏幕有几个参数,屏幕的物理尺寸,分辨率,像素密度(Density, DPI)。ide

其中布局

  • 物理尺寸,就是所说的几寸的屏幕,表明屏幕对角线的长度,好比3.5寸、3.7寸、4寸、7寸等。
  • 分辨率,是屏幕总共能显示的像素数,一般咱们都说几百×几百,好比240*320,320*480,480*800等,咱们通常直接说乘后的结果。
  • 像素密度(DPI),DPI的全称是dots per inch,每英寸点数,还有个词是PPI,是每英寸像素数,其实PPI感受更准确一些,这两个比较纠结,不少时候混用,这里就不明确区分了。(本文的意思都是“每英寸像素数”)

这三个参数,任两个肯定后,第三个量就是肯定了。公式为:分辨率(总像素数)= 物理尺寸 × 像素密度。字体

  • 好比一个3寸的屏幕,分辨率为240×320,那么密度为 开方(480x800/3.5) 约等于为160。
  • 再好比一个3.5寸的屏幕,分辨率为480×800,那么密度为 开方(480x800/3.5) 约等于为331。
  • 在好比一个3.5寸的屏幕,分辨率为960x640,那么密度为 开方(960x640/3.5) 约等于418。
  • 再好比一个4寸的屏幕,分辨率为480x800,那么密度为 开方(480x800/4) 约等于309。

 

4.判断android版本,设置width、缩放比例,iphone不缩放只设置widthgoogle

(function(){
            var phoneWidth = parseInt(window.screen.width),
                phoneScale = phoneWidth/640,
                ua = navigator.userAgent;

            if (/Android (\d+\.\d+)/.test(ua)){
				
                var version = parseFloat(RegExp.$1);
                if(version > 2.3){
                    document.write('<meta name="viewport" content="width=640, minimum-scale = '+phoneScale+', maximum-scale = '+phoneScale+', target-densitydpi=device-dpi">');
                }else{
                    document.write('<meta name="viewport" content="width=640, target-densitydpi=device-dpi">');
                }
            } else {
                document.write('<meta name="viewport" content="width=640, user-scalable=no, target-densitydpi=device-dpi">');
            }
})();
相关文章
相关标签/搜索