【问题标题】:How to detect screen orientation change? - JavaFX on Microsoft Surface如何检测屏幕方向变化? - Microsoft Surface 上的 JavaFX
【发布时间】:2017-08-14 17:42:49
【问题描述】:

我正在为 Microsoft Surface 编写 JavaFX 应用程序,并且我正在寻找一种方法来检测当设备从纵向旋转到横向时屏幕方向的变化,反之亦然。我目前用来检测屏幕方向的方法如下:

window.widthProperty().addListener((obs, oldVal, newVal) -> {
    if((double) newVal < window.getHeight()) {
        setPortraitMode();
    } else {
        setLandscapeMode();
    }
});

此方法适用于手动调整窗口大小。但是,方向改变(设备旋转)不会触发窗口调整大小事件,所以改变布局的方法不会自动触发。

在不监听调整大小事件的情况下检测屏幕方向变化的正确方法是什么?

【问题讨论】:

  • 我猜你可以在 AnimationTimer 处理程序中轮询 Screen 的视觉边界,不过这是一种丑陋的解决方案。

标签: java javafx surface-pro


【解决方案1】:

解决此问题的方法是检查纵横比的变化。我使用的条件:

    if((double) newVal < window.getHeight() || ((double) newVal/visualBounds.getHeight() < 1.5) 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-16
    相关资源
    最近更新 更多