現在の向きが縦でも横でも固定したいという場合。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()が必要。
参考: