2010年11月17日水曜日

Androidでスクリーンの方向を指定してみたらもやもやした

ゲームとかで画面の表示方向を固定したいことがある。

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 件のコメント:

コメントを投稿