【问题标题】:Adobe Air - Mobile Width and HeightAdobe Air - 移动宽度和高度
【发布时间】:2016-10-17 06:48:39
【问题描述】:

我编写了我的第一个移动 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>

我觉得它必须在我的描述符文件中,因为它在模拟器中完美布局,而不是在设备上。设备上的高度值似乎是正确的,但宽度布局却相差甚远。

【问题讨论】:

    标签: ipad mobile air height width


    【解决方案1】:

    问题可能是 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;
    

    【讨论】:

    • 我用更多信息编辑了我的帖子。我将应用程序的宽度和高度追踪到一个标签组件,它显示为 1536x2048,这对于我的 iPad 是正确的。我实际上并没有根据 160DPI 计算任何东西,这只是您在设置 AIR 移动项目时选择的值。缩放会自动发生。我根据舞台的宽度和高度计算一切,看起来是正确的。我觉得这只是描述符文件中的一个基本设置,我不知道,因为数学都是根据我目前拥有的信息检查出来的。
    【解决方案2】:

    我终于让它工作了。由于我选中了以 160DPI 开发应用程序的框,因此我计算的每个距离或宽度都是由 AIR 缩放的。所以如果我根据舞台宽度计算间距,但舞台DPI大于160,我计算的答案会被缩放。所以我最终把我所有的按钮都放在了宽度基于百分比的组中。这样一来,我就不必为每台设备的缩放和计算考虑太多,AIR 将为我完成繁重的工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-13
      • 2021-02-01
      • 1970-01-01
      • 2015-09-22
      • 1970-01-01
      相关资源
      最近更新 更多