我正在为Microsoft Surface编写JavaFX应用程序,我正在寻找一种在将设备从纵向旋转到横向时检测屏幕方向更改的方法,反之亦然。我用来检测屏幕方向的当前方法如下:
window.widthProperty().addListener((obs, oldVal, newVal) -> {
if((double) newVal < window.getHeight()) {
setPortraitMode();
} else {
setLandscapeMode();
}
});
此方法适用于手动调整窗口大小。但是,方向更改(设备旋转)不会触发窗口调整大小事件,因此更改布局的方法不会自动触发。
在不收听调整大小事件的情况下检测屏幕方向变化的正确方法是什么?
答案 0 :(得分:1)
此问题的解决方案是检查宽高比的变化。我使用的条件:
if((double) newVal < window.getHeight() || ((double) newVal/visualBounds.getHeight() < 1.5)