我会尽量用有限的英语解释这一点!
好的,我正在构建一个应用程序,它将在手机上处于纵向模式,在平板电脑上处于横向模式。我这样做的方法是,首先计算显示尺寸而不是基本上说"if display size is more than 5 inches, consider this device to be a tablet".
这很好用。我将 Adobe Flash CS6 与 FlashDevelop 一起使用,因此一旦应用程序启动,我就会将纵向模式设为默认模式。如果设备是平板电脑,它会使用stage.setAspectRatio(StageAspectRatio.LANDSCAPE);
这也很好用。现在,问题是 stage.stageWidth 不会将其值更改为新的 aspectRatio。这是一个简单的修复,只需使用 stage.stageHeight 作为宽度。但是蜂窝/ics 平板电脑/设备上的系统栏不会改变。
抱歉解释不好,但让我告诉你一些数字......
这就是我在平板电脑上启动应用程序时发生的情况。
应用程序从肖像开始。高度 = 1232 宽度 = 800。如您所见,显示分辨率应为 1280x720,但无法通过任何命令获取系统栏的高度。我已经测试了所有返回分辨率的东西,但它们都没有返回完整的分辨率(1280x720)。
现在应用程序变成横向(因为它是平板电脑)并获得此分辨率高度:800,宽度 1232。
你可以想象这是错误的。因为系统栏在底部。分辨率应为高度:752,宽度 1280。
有什么解决办法吗?我一直在考虑一种解决方法,它基本上可以计算出 systembar *应该是什么。但在我开始之前,我想知道是否有任何方法可以解决这个问题。*