![](/img/trans.png)
[英]Difference between running a program in Android emulator and physical device?
[英]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.