【问题标题】:What is unit of measurement in flutter颤振中的计量单位是什么
【发布时间】:2018-11-08 19:15:13
【问题描述】:

像往常一样,我们对 Android 使用 dp,对 ios 使用 pt(point) 作为测量单位。

1 磅 = 1/72 英寸

1 dp = 1/160 英寸

但我不知道颤振中的计量单位是什么

示例:

SizedBox(高度:16.0)

或

TextStyle(fontSize: 23.0)

它只是一个双数,多少 dp 或 pt 等于 1.0(颤振)?是怎么计算的?

【问题讨论】:

    标签: flutter flutter-layout


    【解决方案1】:

    来自https://docs.flutter.io/flutter/dart-ui/Window/devicePixelRatio.html:

    每个逻辑像素的设备像素数。这个数字可能 不是二的幂。事实上,它甚至可能不是整数。为了 例如,Nexus 6 的设备像素比为 3.5。

    设备像素也称为物理像素。逻辑像素 也称为与设备无关或与分辨率无关 像素。

    根据定义,每厘米大约有 38 个逻辑像素,或者 物理显示器每英寸大约有 96 个逻辑像素。价值 devicePixelRatio 返回的最终是从 硬件本身、设备驱动程序或存储在 操作系统或固件,并且可能不准确,有时由 很大的利润。

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

    【讨论】:

    • 这是 google 的尺寸:mdpi (1x)(Baseline): 160 dpi, hdpi (1.5x): 240 dpi, xhdpi (2x): 320 dpi, xxhdpi 3x: 480 dpi, xxxhdpi 4 倍:640 dpi。这意味着1英寸有160dp。如果您的手机是 mdpi,1 英寸有 160 像素,如果是 hdpi vv 则为 240 像素。回到颤动,按照您的回答,这意味着 1 英寸有 96 个单位(我不知道名称),以及尺寸是: mdpi:96 dpi hdpi:144 dpi xhdpi:192dpi xxhdpi:288dpi xxxhdpi:384dpi。对吗?
    • 我相信是的。如果您知道您的屏幕或设备或模拟器的当前大小,您可以进行测试。只需取 MediaQuery.of(context).size 并比较
    【解决方案2】:

    Flutter 中的度量单位是Logical Pixels。逻辑像素相当于 cm 或 inches,并且不会像尺子那样因分辨率而异。

    1 厘米 = 38 个逻辑像素

    1 英寸 = 96 个逻辑像素

    逻辑像素不同于设备(也称为物理)像素。设备/物理像素是显示器中发光的点/点的数量。

    这个数字是出于历史原因选择的,来自 1980 年。来源:Microsoft

    【讨论】:

      【解决方案3】:

      这一切都归结为设备像素比。例如:

      var pixelRatio = MediaQuery.of(context).devicePixelRatio; // 2
      

      并假设您将SizedBox 与height: 10 一起使用,例如:

      SizedBox(height: 10); // 10 dp
      

      这意味着您的SizedBox 在该设备上将是2 * 10 = 20px。

      【讨论】:

      • 2*10 = 20px,因为您将它乘以设备像素比。 10 是倾角(逻辑像素)
      • @Taosif7 感谢指出。
      【解决方案4】:

      它以像素为单位,如下所述:https://docs.flutter.io/flutter/material/Material-class.html。

      【讨论】:

        猜你喜欢
        • 2020-08-23
        • 1970-01-01
        • 2021-04-15
        • 2021-11-19
        • 1970-01-01
        • 2021-06-21
        • 1970-01-01
        • 2020-09-22
        相关资源
        最近更新 更多