从毫米计算逻辑像素

时间:2018-04-03 17:55:04

标签: dart flutter

我的设计有宽度,高度,填充......以毫米为单位。我现在正试图弄清楚如何将这些数字转换为Flutter使用的逻辑像素系统 我找到了the docs for the device pixel ratio,但我不确定如何解释这个数字,我引用:

  

Flutter框架以逻辑像素运行,因此很少需要直接处理此属性。

所以我不确定这是否可行。
我的问题归结为:有没有一种简单的方法可以计算从适用于Android和iOS的毫米级到逻辑像素?

4 个答案:

答案 0 :(得分:1)

颤动的单位是DP或倾角(也称为密度无关像素)。 就像它的名字所暗示的那样,它与屏幕像素比率无关。

与毫米有什么区别?没有真正重要的。 转换mm> dp或dp> mm类似于mm> inch / inch> mm。

它们之间的关系非常简单:

1英寸= 25.4mm = 160.0DP

这意味着1 mm = 6.299 DP

答案 1 :(得分:0)

我想说目前接受的答案并不准确。

您可以打印真实手机的逻辑像素数,如下所示:

maxWidth = MediaQuery.of(context).size.width; 
maxHeight = MediaQuery.of(context).size.height; 
print("maxWidth = $maxWidth / maxHeight = $maxHeight");

如果有真正的iPhone和iPad可以运行此代码并告诉我最终的maxWidth和maxHeights,我将不胜感激。到目前为止,使用Android手机,我已经将结果与实际手机尺寸进行了比较。我得到的是:

  • GalaxyS6➜高度为5.668537826 dp / mm,宽度为5.668537826 dp / mm。
  • GalaxyS7➜高度为5.668537826 dp / mm,宽度为5.668537826 dp / mm。
  • GalaxyS9➜高度为5.223614747 dp / mm,宽度为5.585946405 dp / mm。
  • PixelXL➜高度为5.612956709 dp / mm,宽度为6.007177748 dp / mm。

请在此处查看我的电子表格: https://docs.google.com/spreadsheets/d/1zmGyeKSf4w4B-bX4HSY4oSuh9RkIIkFwYSd3P9C7eX8/edit?usp=sharing

<强>更新

答案 2 :(得分:0)

逻辑像素是每单位距离(mm)的点数比率,因此您必须将问题更改为每毫米有多少个点代表1个逻辑像素?

正如所提到的here

  

Flutter遵循简单的基于密度的格式,例如iOS。资产可能   是1.0x,2.0x,3.0x或任何其他乘数。 Flutter没有DPS   但有逻辑像素,基本上与   与设备无关的像素。所谓devicePixelRatio表示   单个逻辑像素中物理像素的比率。

并且如上所述,1.0x逻辑像素比率在Android密度限定词中代表mdpi。根据{{​​3}},mdpi ≃ 160DPIdpi代表可以在1英寸(2.54厘米)范围内的一行中放置的单个点的数量,因此:

160dpi = 160 dots per inch = 6.299 dots per mm

由于mdpi ≃ 160DPI和1个逻辑像素代表mdpi,所以:

1.0x logical pixel ratio ≃ 6.299 dots per mm

答案 3 :(得分:0)

以实际大小显示小部件。

double millimeterToSize(double millimeter) => millimeter * 160 * 0.03937;