Flutter.dev 指出每英寸有 96 个逻辑像素,但在我的设备和模拟器中约为 134 个

标签 flutter flutter-layout

Flutter.dev 指出每英寸有 96 个逻辑像素,但在我的设备和模拟器中约为 134 个。我的设备是:

2160 像素 * 1080 像素
5.36 英寸 * 2.68 英寸

设备像素比 = 3,因此一英寸有 403 个像素。 我的设备声称它有 360 * 720 个逻辑像素,因此如果我们计算一下,每英寸有 720/5.36=134 个逻辑像素。

问题是:它是可变的还是恒定的,134。据我所知,在 android 世界中它是 160,根据 flutter.dev 网站它是 96。

https://api.flutter.dev/flutter/dart-ui/Window/devicePixelRatio.html

By definition, there are roughly 38 logical pixels per centimeter, or about 96 logical pixels per inch, of the physical display. The value returned by devicePixelRatio is ultimately obtained either from the hardware itself, the device drivers, or a hard-coded value stored in the operating system or firmware, and may be inaccurate, sometimes by a significant margin.

最佳答案

这并不精确,在 Android 世界中并不总是 160。设备不会被迫遵循这一点,它们实际上将其视为设计/营销决策。例如,如果他们想在屏幕上容纳更多内容,他们会选择 DPI 来实现此效果。作为开发人员,您有两种选择。首先是为每个设备制作一个表格,您必须通过实验找出正确的 DPI,然后自己从英寸转换为像素。第二个是忘记尝试了解确切的 DPI。只需做出近似值,并接受它在不同设备中会略有不同的事实。

关于Flutter.dev 指出每英寸有 96 个逻辑像素,但在我的设备和模拟器中约为 134 个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57745636/

相关文章:

flutter - 如果有很多要滑动的项目, slider 会挂起

flutter - 向下滑动SlideDialog时,我在底部看到RederFlex溢出错误。您可以提出任何解决此问题的方法吗?

javascript - Laravel和Flutter通知系统

flutter - 使用多个图像创建链式 flutter 动画

flutter - 如何在 Flutter 的屏幕顶部创建一个半椭圆?

Flutter 可折叠/可扩展卡片

flutter - flutter 中基于拖动 handle 的旋转图像

android - flutter : Errors when adding TextFields

flutter - 将换行文本限制为实际文本

android - 键盘在 flutter 应用程序中向上插入 FloatingActionButton