画面の逆向きを設定する


Android SDK 2.2までは画面の向きが縦と横のみサポートされていましたが、Android SDK 2.3からは縦と横の逆向きもサポートされるようになりました。

ですが、現在のエミュレータでの[Ctrl] + [F12]の操作では縦と横のみサポートされている為、縦と横の逆向きの動きを確認するにはソースコードで設定する必要があります。

詳細は以下から。

Android SDK 2.3からActivityInfoクラスに以下の定数が追加されました。

SCREEN_ORIENTATION_FULL_SENSOR 全ての向きを表す定数
SCREEN_ORIENTATION_REVERSE_LANDSCAPE 横の逆向きを表す定数
SCREEN_ORIENTATION_REVERSE_PORTRAIT 縦の逆向きを表す定数
SCREEN_ORIENTATION_SENSOR_LANDSCAPE 横と横の逆向きを表す定数
SCREEN_ORIENTATION_SENSOR_PORTRAIT 縦と縦の逆向きを表す定数

この中から、今回は画面を縦の逆向きと横の逆向きに固定するためにSCREEN_ORIENTATION_REVERSE_LANDSCAPEとSCREEN_ORIENTATION_REVERSE_PORTRAITを使用します。

まずは縦の逆向きを設定する為のサンプルです。

ReversePortrait.java

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    //画面の向きを縦の逆向きにする
    this.setRequestedOrientation(ActivityInfo.
        SCREEN_ORIENTATION_REVERSE_PORTRAIT);
}

setRequestedOrientationメソッドにActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAITを引数として渡すことで縦の逆向きを設定することができます。

次に横の逆向きを設定する為のサンプルです。
ReverseLandscape.java

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    //画面の向きを横の逆向きにする
    this.setRequestedOrientation(ActivityInfo.
        SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
}

setRequestedOrientationメソッドにActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAITを引数として渡すことで横の逆向きを設定することができます。