Android像素转换的研究(三)

转自:http://blog.csdn.net/yihui823/article/details/6735750

实验二

 

我们再回顾一下实验一的结论:

相同的dip,在不同分辨率的屏幕上,在屏幕的相对宽度是一样的。所谓相对宽度,可以理解为是控件占有屏幕的百分比。

desity :160 = px : dip

但是,我们仔细盘算一下这个公式,变换一下:

desity / 160 =px / dip => desity / px = 160 / dip

我们应该把之前的结论再加上一个条件,相同的desity和屏幕高度比。

我们再用实验来说明这个问题。

 

对比4

  我们还是用之前的程序,在不同的虚拟机上看效果。对比1的时候,我们用的两个虚拟机:

虚拟机1:desity=120;height=320;比例:0.375

虚拟机2:desity=160:height=480;比例:0.333

可以看出,这两个比值是不同的,只是差别不大,所以可能我们肉眼看不出来。

我们把这个差别变大。建立一个和虚拟机1一样尺寸的虚拟机,但是desity不同。

 

虚拟机1:

pix-003

显示的效果如下:

pix-004

虚拟机5:

pix-011

是不是启动后发现屏幕小了很多,那是因为密度高了哦。

显示的效果:

pix-012

和之前的公式是一样的,在desity=160的时候,dpi和px是1:1的关系。现在按钮已经全屏显示了。

所以说,印证了我们之前从公式推出来的结论:

要想dpi显示的控件是与屏幕保持相对不变,那么屏幕分辨率改变的时候,屏幕的密度也必须同比例改变。

这是个很有趣的结论。也就是说,屏幕密度不变的时候,屏幕分辨率改变了,用dpi定位的控件还是会改变相对大小和位置。

那么就是说,在屏幕分辨率变大的时候,必须保持屏幕密度也变大,才能让dpi定位的控件保持相对不变。

我们把之前的结论修正一下:

相同的dip,在不同分辨率的屏幕上,如果分辨率与密度比例相同,那么在屏幕的相对长度是一样的。

desity :160 = px : dip

 

如果,desity = inch/px, 那么 desity / px = inch / (px*px)

也就是说,屏幕尺寸大增大到4倍,像素不需要增大到4倍,只需要增大到2倍就行了。想想看,的确是这样,因为屏幕密度增加了啊。

猜你喜欢

转载自cshbbrain.iteye.com/blog/1841205
今日推荐