私の Android アプリケーションは、ランドスケープのみになるように設計されています。私は置きました
android:screenOrientation="landscape"
android:configChanges="orientation|keyboardHidden|screenSize"
マニフェストに。そして、実際には横向きで起動します。そして、それはクールです。しかし!いくつかの計算を実行するには、デバイスの画面サイズを知る必要があります。そして、次のコードを に追加しましたonCreate()
:
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
// utilize size to calculate something...
縦向きからアプリを起動すると、(Google Nexus) size.x = 800, size.y = 1205 が得られます (横向きの場合) size.x = 1280, size.y = 736.
Android が縦向きから横向きに切り替わるまでに時間がかかるようです (最終的には、アプリが "横向き" になっていることがわかります)。しかし、onCreate
このスイッチの前に呼び出されます-そして、それは私の計算を殺します. 私の推測は正しいですか?
計算を から に移動しようとしonCreate()
ましonGlobalLayout()
たが、次の手順を実行しても縦長のサイズが得られます。
- 横向きでアプリを起動
- スリープボタンを押す(画面が暗くなる)
- 縦向きに回転
- スリープ ボタンを押します (ロック解除画面の表示で画面がフェードします)。
- デバイスのロックを解除する
- 私のアプリは、縦向きのサイズを受信してウェイクアップします
- 次の onGlobalLayout() で、ようやくランドスケープ サイズを取得しましたが、手遅れです。
縦向きを完全になくすことはできますか?