逻辑像素如何转换为物理像素

时间:2019-09-04 16:10:04

标签: flutter

第一个问题:

如果我创建一个宽度设置为50(逻辑像素)的Container小部件,该小部件最终将占用多少物理像素?
假设答案是50 * devicePixelRatio并四舍五入为整数值是正确的吗?

第二个问题:

这个问题从技术上讲是第一个问题。假设我们有2个设备,每个设备具有相同的屏幕宽度,相同的分辨率但具有不同的屏幕高度。理论上,两个设备的逻辑像素宽度值应该相同。 但是,一个devicePixelRatio会更高。因此,最终的物理像素宽度值将有所不同,这可能会导致Container之一溢出,因为我的假设是最终的Container小部件宽度将乘以devicePixelRatio。

1 个答案:

答案 0 :(得分:0)

  

假设答案是50 * devicePixelRatio并且将其四舍五入为整数值是正确的吗?

  

这个问题从技术上讲是第一个问题。假设我们有2个设备,每个设备具有相同的屏幕宽度,相同的分辨率但具有不同的屏幕高度。理论上,两个设备的逻辑像素宽度值应该相同。但是,一个devicePixelRatio会更高。因此,最终的物理像素宽度值将有所不同,这可能会导致Container之一溢出,因为我的假设是最终的Container小部件宽度将乘以devicePixelRatio。

dvp = 1用于第一个设备,dvp = 2用于第二个设备。因此,第一部手机中50的宽度为

1 * 50 = 50设备像素

第二个设备将是

2 * 50 = 100设备像素

但是这并不意味着Container width将在第二部手机上2x,并且您可能会在溢出错误中运行。根本没有!

实际上,在第一部手机50中,设备像素用于创建50逻辑像素框(清晰度较低),而在第二部电话中,100中使用设备像素创建50逻辑像素框(更清晰