日々精進

新しく学んだことを書き留めていきます

画面の向きを現在の向きに固定する

現在の向きが縦でも横でも固定したいという場合。API Levelが18以上であれば、以下を実行するだけでいい。

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);

17以下であれば以下のようにする。

    switch (((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay().getRotation()) {
        case Surface.ROTATION_0:
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
            break;
        case Surface.ROTATION_90:
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
            break;
        case Surface.ROTATION_180:
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
            break;
        case Surface.ROTATION_270:
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
            break;
    }

上記はいずれもActivity内で書いた場合のコード。Fragment内だとgetActivity()が必要。

参考: