Android像素转换的研究(二)

xiaoxiao2021-03-01  13

如何让虚拟机和真机显示的一样

原创文章,如有转载,请注明出处:http://blog.csdn.net/yihui823/article/details/6734547

之前我们得出结论:

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

在density = 160的时候,1dip =1px

我们可以得到这么一个公式:

desity :160 = px : dip

现在我们继续研究。我们换一种对比方式。

对比2:

这次我们比较一个屏幕长宽比不同的,具有相同宽度的屏幕的情况。

虚拟机1:

pix-003

显示的效果如下:

pix-004

虚拟机3:

pix-007

显示效果:

pix-008

哇塞!完全的不一样啊,整个都变形了。

相同的density,相同的240dpi,但是一个按钮占全部宽度,另一个按钮只占约3/4宽度。这个跟之前推算出来的结论完全不吻合。

解释只能是:不同屏幕长宽比,即使有相同的density,也没用。

但是我们仔细看看,好像高度的比例是一样的。

那我们再来看一下,相同高度的情况:

对比3:

虚拟机:

pix-003

显示的效果如下:

pix-004

虚拟机4:

pix-009

效果如下:

pix-010

可以看出来,是按照高度的比例来显示的。

所以我们可以得出,如果按dip来控制按钮的大小和位置:

1, 屏幕长宽比例不同的时候,以高度来做兑换比例。

2, 控件自身的高宽比是不会随着屏幕长宽比的改变而改变。

3, 屏幕长宽比改变之后,控件以高度的比例协调控件相对位置和大小。

在屏幕长宽比例不同的时候,公式:

desity :160 = px : dip

是按高度来计算的,宽度是无效的。

待续...

相关资源:Android开发之dp转像素,像素转换为dp工具类,详细代码,带有源文件下载地址。
转载请注明原文地址: https://www.6miu.com/read-4050121.html

最新回复(0)