Adobe Air - 移动宽度和高度

时间:2016-10-17 06:48:39

标签: ipad mobile air height width

我已经编写了我的第一个移动AIR应用程序。在我的iPad上,布局是一个令人沮丧的失败。它在Flash Builder模拟器中看起来很完美。

我将应用程序设置为以纵向模式运行,没有自动定位。它从160 DPI开始并扩大规模。当应用程序完成后,我得到舞台的宽度和高度,然后使用这些数字来计算我的数据网格的所有按钮和列宽的布局。当我在iPad上加载应用程序时,所有按钮分开的距离太远,有几个按钮在屏幕上运行。数据网格全部应该适合屏幕,但是有四个列在屏幕上运行。

几乎就像在横向模式而不是在纵向模式下计算屏幕的宽度一样。所以我有两个问题:

1)如果以纵向方向布局应用程序,舞台的宽度是纵向还是横向的宽度?

2)我对如何将所有内容放在具有不同屏幕密度的移动设备上感到困惑。获取应用宽度和高度,然后设置距离和间距(以像素为单位)或使用百分比是否更好?

感谢您的任何见解。这令人失望。

修改 当应用程序完成后,我会调度一个自定义事件,让我的其他组件知道应用程序已加载,这样他们就可以获得应用程序的宽度和高度并适当地自行设置。在我的主应用程序中,我有这段代码:

protected function appCreationCompleteHandler(event:FlexEvent):void {   
    // Dispatch an event to the rest of the application that the application is complete so that I can calculate all of my layout distances 
    var e:Event = new Event("appComplete", true); 
    dispatchEvent(e); 
    appWidth = stage.stageWidth; 
    appHeight = stage.stageHeight; 
} 

在我的应用程序描述符文件中,我设置了以下值:

<aspectRatio>portrait</aspectRatio>

<autoOrients>false</autoOrients>
<fullScreen>true</fullScreen>
<visible>true</visible>
<softKeyboardBehavior>pan</softKeyboardBehavior>

我觉得它必须是我的描述符文件中的某些内容,因为它在模拟器中完美布局,而不是在设备上。设备上的高度值似乎是正确的,但宽度布局只是关闭。

2 个答案:

答案 0 :(得分:0)

问题可能是screenWidth和screenHeight仍然返回实际的宽度和高度但是因为你将DPI设置为固定值,实际可见区域小于那个?

您可以使用Capabilities.screenDPI重新计算实际大小,但问题是它在许多设备上非常不可靠(意味着它返回错误的DPI)。

尝试使用Screen类获取宽度和高度:

var screen:Screen = Screen.getScreensForRectangle(stage.nativeWindow.bounds)[0];
var width:int = screen.visibleBounds.width;
var height:int= screen.visibleBounds.height;

答案 1 :(得分:0)

我终于开始工作了。由于我选中该框以160DPI开发应用程序,因此我计算的每个距离或宽度都是由AIR缩放的。因此,如果我根据舞台的宽度计算间距,但是舞台DPI大于160,我计算的答案将被缩放。所以我最终将所有按钮放在宽度基于百分比的组中。通过这种方式,我不必为每台设备进行扩展和计算,AIR会为我做重任。