1. ホーム
  2. android

[解決済み] Androidでレイアウトの向きが変わったことを検出するには?

2022-08-20 10:34:41

質問

例えば、レイアウトが縦長から横長に変わるとき(またはその逆)、方向を変える機能を実装しました。方向転換のイベントが終了したことを検出するにはどうしたらよいでしょうか。

このような場合 OrientationEventListener は機能しませんでした。レイアウト方向変更イベントに関する通知を受け取るにはどうすればよいですか?

どのように解決するのですか?

を使用します。 onConfigurationChanged メソッドを使用します。 以下のコードを参照してください。

@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:configChanges 以下のコードを参照してください。

<activity android:name=".MyActivity"
          android:configChanges="orientation|keyboardHidden"
          android:label="@string/app_name">

注意 Android 3.2 (API level 13) 以降では、端末が縦向きと横向きに切り替わったときに画面サイズも変わります。従って、APIレベル13以上の開発において、向きの変化によるランタイムの再起動を防ぎたい場合は、以下のように宣言する必要があります。 android:configChanges="orientation|screenSize" APIレベル13以上の場合 .

これがあなたの助けになることを願っています... :)