首页 > 解决方案 > Flutter.dev 声明每英寸有 96 个逻辑像素,但在我的设备和模拟器中大约是 134

问题描述

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

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

标签: flutterflutter-layout

解决方案


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


推荐阅读