我正在制作我的应用程序多屏(flex 移动)。基本上我想知道我什么时候使用平板电脑或智能手机。因此我想知道以英寸为单位的屏幕尺寸。我在 Desire HD(4.3 英寸)上对此进行了测试。我的问题是:当我使用 Capabilities.screenDPI 时,模拟器显示正确的值(217),但是当我在我的设备上运行它时,它给了我一个错误的 DPI 值(240),宽度和高度是正确的。基于该 dpi,我得到了错误的屏幕尺寸(3.887 英寸!= 4.3 英寸)。再次在模拟器上一切正常。设备模拟器配置了正确的值,只有当我在真实设备(没有模拟器)上运行它时,我得到一个错误的 DPI 值。
我正在使用以下代码进行计算:
var screenX:Number = stage.stageWidth;
var screenY:Number = stage.stageHeight;
var pixels:Number = (screenX*screenX) + (screenY*screenY);
var screenSize:Number = Math.sqrt(pixels)/Capabilities.screenDPI;
return (screenSize >= 6) ? "tablet" : "phone"
为了节省您的时间,我将给出 Desire HD 的值:
480 x 800 像素,4.3 英寸(~217 ppi 像素密度)
使用的公式很简单 ~ 毕达哥拉斯:a2 + b2 = c2 -> sqrt(c)/dpi = 以英寸为单位的屏幕尺寸。
基于 Adobe,DPI 或 PPI 值可以“互换”使用。(Adobe,帮助)。我没有找到任何关于 dpi 值与 ppi 值不同的信息,或者在 flex 中是否有可能使用 ppi 属性的任何信息。
所以在我的真实设备上我得到:
480 x 800 像素,3.89" (~240 dpi)。
另一个注意事项: 我已经看到 flex mobile 中有 3 个默认常量。可能是直接扔进其中之一吗?(我不怀疑,因为我直接调用 Capabilities.screenDPI)。
DPIClassification.DPI_160
DPIClassification.DPI_240
DPIClassification.DPI_320
我的意思是:如何确定它是平板电脑还是手机(以便切换到另一种布局)?你不能走这applicationDPI
条路,因为它与三星 Galaxy S3 (1280x720, 319 PPI) 或 Apple iPad 3 (2048×1536, 264 PPI) 等新设备混在一起。