我有一个宽度、高度、填充......以毫米为单位的设计。我现在正试图弄清楚如何将这些数字转换为 Flutter 使用的逻辑像素系统。
我找到了设备像素比的文档,但我不知道如何解释这个数字,我引用:
Flutter 框架以逻辑像素为单位进行操作,所以很少需要直接处理这个属性。
所以我不确定这是否是要走的路。
我的问题归结为:是否有一种简单的方法可以从毫米计算到适用于 Android 和 iOS 的逻辑像素?
Flutter的单位是DP或dip(又名密度无关像素)。正如其名称所暗示的,它与屏幕像素比无关。
和毫米有什么区别?没有什么真正重要的。转换 mm>dp 或 dp>mm 类似于 mm>inch/inch>mm。
他们之间的关系相当简单:
1 英寸 = 25.4 毫米 = 160.0 DP
这意味着 1 毫米 = 6.299 DP
我会说目前接受的答案并不准确。
您可以打印真实手机的逻辑像素数,如下所示:
maxWidth = MediaQuery.of(context).size.width;
maxHeight = MediaQuery.of(context).size.height;
print("maxWidth = $maxWidth / maxHeight = $maxHeight");
Run Code Online (Sandbox Code Playgroud)
如果有真正的 iPhone 和 iPad 的人可以运行此代码并告诉我生成的 maxWidth 和 maxHeights,我将不胜感激。到目前为止,对于 Android 手机,我已经将结果与实际手机尺寸进行了比较。我得到的是这样的:
在此处查看我的电子表格: https : //docs.google.com/spreadsheets/d/1zmGyeKSf4w4B-bX4HSY4oSuh9RkIIkFwYSd3P9C7eX8/edit?usp=sharing
更新:
Android 文档 ( https://developer.android.com/training/multiscreen/screendensities#TaskUseDP ) 说“一个 dp 是一个虚拟像素单位,大约等于中等密度屏幕上的一个像素(160dpi;“基线”密度)”。对于三星和谷歌手机来说,这在实践中显然不是这样。或者是,如果您注意“大致”一词。
Flutter 文档 ( https://api.flutter.dev/flutter/dart-ui/FlutterView/devicePixelRatio.html ) 说它是每毫米 3.8 个逻辑像素,这显然是非常错误的。
| 归档时间: |
|
| 查看次数: |
2761 次 |
| 最近记录: |