android手机分辨率,xDpi,yDpi,尺寸等各种相关物理参数

来源:互联网 发布:天刀男性捏脸数据导入 编辑:程序博客网 时间:2024/06/06 05:03

了解这些参数,一步一步来。

1.首先,android手机是google设计出来的,既然是外国的,所以他们用的比较多的就是英尺,英寸,自然手机也是按照英寸来的,再往大点说,各种电视机一般都是说多少寸,多少寸,也是这个意思,转化成厘米就比较符合国人的习惯了,首先得知道英寸和厘米的转化关系:

1in = 2.54厘米,in就是英寸

2.用le x 820举个例子,看代码,andorid里面获取屏幕参数的类名是DisplayMetrics这个类。写个简单的访问方式:

DisplayMetrics dm = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(dm);int widthPixels= dm.widthPixels;int heightPixels= dm.heightPixels;float density = dm.density;
Log.i("blb", "widthPixels:" + widthPixels        + ", heightPixels:" + heightPixels + ", density:" + density + ", width:" + view.getMeasuredWidth() + ", height:" + view.getMeasuredHeight()        + "xDpi:" + dm.xdpi + ", yDpi:" + dm.ydpi + ", densityDpi:" + dm.densityDpi + ", scaledDensity:" + dm.scaledDensity +        ", ");
这些代码的意思就是把屏幕相关参数放到一个类里面,代码里面的view就是layout的根节点,接下来看下输出:

I/blb: widthPixels:1440, heightPixels:2560, density:3.5, width:1440, height:2280xDpi:515.154, yDpi:516.063, densityDpi:560, scaledDensity:3.5, 

这输出的参数一个一个分析下:

看第一个:widthPixels:这个就是屏幕的宽度,显示的数值是1440,就是说屏幕的宽度是1440px;

px就是像素,像素是一种逻辑单位,就是手机横方向上是1440个像素,再说的直白一点就是这款手机横方向分成了1440个小格子,所以才有了像素越高,越清晰这种说法,从某种程度上想这种说法也是合理的,但是如果算法好的话,就可以弥补像素的差别。

第二个:heightPixels:这个是屏幕的高度,现实的数值是2560,就是说屏幕的高度是2560px,同上。

所以手机的像素就是1440*2560,像素是什么意思?就是平时经常说的分辨率。

第三个:density:这个是密度的意思,就是单位英寸下可以容纳多少个点。这个是按照规定来的,160dpi是标准,dpi就是dots_per_inch,后面有个参数是densityDpi是560,560 / 160 = 3.5,这个3.5就是这个意思。

第四个:width:这个是把View设置成match_parent时返回的宽度,和第一个参数相等无争议。

第五个:height:这个是把VIew设置成match_parent时返回的高度,缺少了280是上面的标题栏的高度。

麻烦的来了。

第六个:xDpi是水平方向上1inch实际上容纳的点的数量,515.154就是说横方向上每inch有这么多的点。这么多小数点我感觉应该是精度实际上的误差。

第七个:yDpi同上,类似的道理,就是说垂直方向上实际容纳的点的数量。


接下来看下物理参数:



看下实际参数,分辨率没啥好说的。5.7英寸指的是屏幕的斜边,计算公式如下:

屏幕宽度:横方向的px / xdpi * 2.54cm / in, 换算下实际情况:1440 / 515.154 * 2.54 = 7.1000cm;

实际的参数是77.6mm,这样的误差是因为你在计算时是实际显示的区域,给的物理参数是带上大黑边,和外框。

屏幕高度:纵方向的px / ydpi * 2.54cm / in, 换算下实际情况:2560 / 516.063 * 2.54 = 12.6000cm;

实际的长度是156.8mm,道理类似。

这些我都实际的拿尺子量过。

接下来就是英寸了,勾股定理,(7.1^2 + 12.6^2)开个根号,除以2.54 = 5.69398057英寸,大致也对上了。

0 0