繁体   English   中英

为什么Android在物理设备和模拟器上显示dp值有差异

[英]Why is there a discrepancy between Android display dp values on physical device and emulator

我有一个针对 Android 的 Flutter 应用程序。

我正在三星 Galaxy A32 5G 上进行测试。 手机显示屏规格为:

显示屏尺寸:6.5 英寸,102.0 cm2(~81.6% 屏占比)

分辨率:720 x 1600 像素,20:9 比例(~270 ppi 密度)

我使用下面的代码来确定屏幕尺寸,并基于此更改 fonts 尺寸和其他参数:

MediaQuery.maybeOf(context)?.size.width
MediaQuery.maybeOf(context)?.size.height

当我在物理手机上运行上面的代码时,我得到了这些宽度和高度的 dp 值:

360 x 752

当我使用相同的屏幕规格创建模拟器时,我得到这些值:

480 x 1050

这是一个非常大的差异。 物理设备正在为非常小的手机返回值,实际上屏幕上的东西看起来非常小。 电话已恢复出厂设置,因此不是任何用户定义的设置。

应用程序在模拟器上看起来很棒,但在真实设备上真的很糟糕。 我现在认为我使用模拟器所做的测试毫无意义。

这里发生了什么?

您在模拟器上看到的屏幕尺寸不是设备的确切尺寸。在选项中,您可以更改设置以完全根据需要设置模拟器。 请检查所附图片

在此处输入图像描述

不同之处在于 dp 分辨率与实际像素分辨率不同。

使用MediaQuery.of(context).devicePixelRatio获取像素大小和 dp 大小之间的比率。

我会建议你使用 dp 系统。 Android 和 iOS 默认使用 dp 而不是像素是有原因的。 实际上 dp 屏幕尺寸比像素一更稳定,对于实际屏幕尺寸。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM