3

有没有办法确定 Android 设备上的 AIR 应用程序可用的实际区域?

例如,在 Kindle Fire Capabilities.screenResolutionY上返回 600,而实际上是 580 左右,因为有工具栏。是否有可能以编程方式达到这个值?

谢谢。

4

3 回答 3

2

使用 stage.stageHeight http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/Stage.html#stageHeight

于 2012-07-31T23:26:02.770 回答
0

这个问题是相对的。从硬件方面来看,有 600 个像素可用,因此应该可以预期结果。如果您正在为 Kindle Fire 编程,您难道不能只预测 20 像素的工具栏并在需要时从结果中减去 20 吗?这是基于您的项目特定于 Kindle Fire 的假设。

于 2012-07-31T19:02:06.767 回答
0

我觉得这个问题有点局限。AIR 代码可以(大部分)独立于平台,我建议在编程中允许该方面。考虑到这一点,这与我想出的通用尺寸解决方案一样接近。

static public const DEVICE_UNK:int = 0;
static public const DEVICE_WINDOWS:int = 1;
static public const DEVICE_APPLE_IPAD:int = 2;
static public const DEVICE_ANDROID:int = 3;

public var deviceType:Number;
public var _fullWidth:Number;
public var _fullHeight:Number;

deviceType = -1;
if (Capabilities.manufacturer.toLowerCase().indexOf("windows") != -1)
{
    deviceType = DEVICE_WINDOWS;
}
else if (Capabilities.manufacturer.toLowerCase().indexOf("android") != -1)
{
    deviceType = DEVICE_ANDROID;
}
else if (Capabilities.manufacturer.toLowerCase().indexOf("ios") != -1)
{
    deviceType = DEVICE_APPLE_IPAD;
}
else
{
    deviceType = DEVICE_UNK;
}

然后用于deviceType在初始化、调整大小或其他任何过程中确定尺寸:

switch (deviceType)
{
    case DEVICE_UNK: 
    case DEVICE_WINDOWS: 
        _fullWidth = stage.stageWidth;
        _fullHeight = stage.stageHeight;
        break;
    case DEVICE_ANDROID: 
    case DEVICE_APPLE_IPAD: 
        _fullWidth = Math.max(stage.fullScreenWidth, stage.fullScreenHeight);
        _fullHeight = Math.min(stage.fullScreenWidth, stage.fullScreenHeight);
        break;
    default: 
        trace("Error: invalid deviceType.");
        break;
}

_fullWidth然后_fullHeight是任何平台上可用空间的当前最大尺寸。

我很想对代码进行任何改进。请不要进行代码优化;我正在寻找更好的方法来确定尺寸。如果您更了解,请发表评论。

于 2012-08-01T03:11:24.857 回答