レイアウトが縦向きから横向き(またはその逆)に変更されるなど、向きの変更機能を実装しました。向きの変更イベントが終了したことをどのように検出すればよいでしょうか。
動作OrientationEventListener
しませんでした。レイアウトの向きの変更イベントに関する通知を受け取るにはどうすればよいですか?
ベストアンサー1
onConfigurationChanged
アクティビティ法を使用する- で説明されているようにAndroid ドキュメントの「ランタイム変更の処理」ガイド:
@Override public void onConfigurationChanged(@NotNull Configuration newConfig) { super.onConfigurationChanged(newConfig); // Checks the orientation of the screen if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show(); } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){ Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show(); } }
また、適切なマニフェストファイルに要素を追加して、android:configの変更:
<activity android:name=".MyActivity" android:configChanges="orientation|keyboardHidden" android:label="@string/app_name">
注記:Android 3.2(APIレベル13)以降では、デバイスが縦向きと横向きに切り替わると「画面サイズ」も変わります。したがって、APIレベル13以上で開発する際に、向きの変更によるランタイムの再起動を防ぎたい場合は、次のように宣言する必要があります。API レベル 13 以上の場合、android:configChanges="orientation|screenSize"。