【问题标题】:Codename One: Starting portrait app in landscape orientation and getDisplayWidth()代号一:横向启动纵向应用和getDisplayWidth()
【发布时间】:2020-05-13 10:14:24
【问题描述】:

我的应用只能纵向运行,不能横向运行。对于 iOS,这是一个可以正常工作的构建提示 (ios.interface_orientation)。对于 Android,这必须使用 lockOrientation(true) 在代码中设置,我将其放入 public void init(Object context)。锁定方向后,我在 public void start() 中调用 getDisplayWidth()。当我在横向的 Android 设备上启动/测试应用程序时,我遇到了问题。显然切换方向需要时间,有时返回的显示宽度实际上是显示高度。我尝试在 callSerially 中使用 getDisplayWidth() 包装代码,但这无济于事。我也尝试调用 getDisplayHeight() 并取两个值中的最小值,但这不起作用,因为如果将宽度作为高度返回,则状态栏高度会被扣除,我们最终会得到一个显示“宽度”值太小。

因此,1) 我的初始表单(具有缩放到显示宽度的图像)首先被错误地显示 - 在等待下一个表单显示时得到纠正,并且 2) 我的 GUI 有时使用显示宽度错误 - 因此未使用全宽。

我的问题是,当设备必须从横向调整为纵向时,如何确保在调用 lockOrientation(true) 后获得正确的(纵向)显示宽度。

【问题讨论】:

    标签: android width codenameone display landscape-portrait


    【解决方案1】:

    我敢肯定,还有很多其他边缘情况会重现您错过的这个问题,例如多任务/并排视图等。即使锁定方向,显示大小也会发生变化。

    您可以执行多种操作,例如覆盖组件的 onLayout 回调或侦听表单大小更改事件。

    【讨论】:

    • 是的,我也得看分屏。方向锁定不适用于分屏(在 Android 上)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多