2017-08-14 11 views
3

Microsoft SurfaceのJavaFXアプリケーションを作成していますが、デバイスを縦長から横長に、またはその逆に回転させるときに、画面の向きの変化を検出する方法を探しています。次のように私は、画面の向きを検出するために使用しています現在の方法は次のとおりです。画面の向きの変化を検出する方法は? - Microsoft SurfaceのJavaFX

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

この方法は、手動ウィンドウのサイズ変更のために正常に動作します。ただし、向きの変更(デバイスの回転)はウィンドウのサイズ変更イベントをトリガしないため、レイアウトを変更する方法は自動的には発生しません。

サイズ変更イベントをリッスンすることなく、画面の向きの変更を検出する適切な方法は何ですか?

+0

私はあなたが[画面]の視覚境界をポーリングことができると思います(https://docs.oracle.com/javase/8/javafx/api/javafx/stage/Screen.html )[AnimationTimer](https://docs.oracle.com/javase/8/javafx/api/javafx/animation/AnimationTimer.html)ハンドラ内で、これは一種の醜い解決策です。 – jewelsea

答えて

1

この問題の解決方法は、アスペクト比の変更を確認することです。私が使用した条件:

if((double) newVal < window.getHeight() || ((double) newVal/visualBounds.getHeight() < 1.5) 
関連する問題