flutter - 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 返回的值最终是从硬件本身、设备驱动程序或存储在操作系统或固件中的硬编码值获得的,并且可能不准确,有时相差很大。
解决方案
这并不精确,在 android 世界中并不总是 160。设备不会被迫遵循这一点,它们实际上将其视为设计/营销决策。例如,如果他们想在屏幕中放置更多内容,他们会选择 DPI 来实现此效果。作为开发人员,您有两种选择。首先是为每个设备制作一个表格,您必须通过实验找出正确的 DPI,然后自己将其从英寸转换为像素。第二个是忘记尝试知道确切的 DPI。只是做一些近似的事情并接受它在不同设备中会略有不同的事实。
推荐阅读
- ios - 更改状态栏颜色 SwiftUI 没有 UIHosting
- python - 从 docker 容器创建 Keycloak 用户
- snowflake-cloud-data-platform - 如何从 SnowFlake 中的 XML 数据中获取有关嵌套键属性的信息?
- asp.net-core - 如何解决自动刷新在 ASP.NET Core 5 中静默失败的问题?
- swift - 如何为 Realm 中的每个新对象获取新的唯一 ID?
- c# - 如何使返回内容的简单异步操作方法返回实际内容而不是类型
- wpf - ComboBoxItem 键盘箭头和 Enter 键不起作用
- networking - 使用 ZeroMQ 在接口中转发数据包
- php - 从 Heroku 部署 Github 分支的问题
- json - 遍历 React JS 中的嵌套 JSON