AndroidManifest.xmlでactivityのscreenOrientation属性で指定する方法が一般的だと思う。
<activity ... android:screenOrientation="landscape" ...>
この指定は実行時に変更することができる。
縦長固定に変える
Activity#setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
横長固定に変える
Activity#setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
システムに決めてもらう
Activity#setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
「システムに決めてもらう」設定にしておくと、重力センサーなどに従って、自動的に自然な方向に回転したりする。
普通の時は自由に回転させておくけれど、ボタンを押したときには「その時の方向で固定」したいこともある。
public void lockScreenOrientation() {
switch (getResources().getConfiguration().orientation) {
case Configuration.ORIENTATION_LANDSCAPE:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
break;
case Configuration.ORIENTATION_PORTRAIT:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
break;
case Configuration.ORIENTATION_SQUARE:
// ここではどうしたらいい?
break;
}
}
世の中には正方形のデバイスもあるらしい。
確かに横長でも縦長でもないけれど、正方形だとしてもデバイスの方向ってやつがあるはずでしょぅ
そう考えると、SQUAREっていう報告は来ないはず…
実機で試してみたいなぁー
あーもやもやする

0 件のコメント:
コメントを投稿