Android のレイアウトで方向の変化を検出するにはどうすればよいでしょうか? 質問する

Android のレイアウトで方向の変化を検出するにはどうすればよいでしょうか? 質問する

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

動作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"

おすすめ記事