画面の向きの制御。

Top > 画面の向き(ScreenOrientation)
画面の向き(ScreenOrientation)
Last-modified: 2010-08-04 (水) 00:27:34

アクティビティに対して画面の縦・横の固定や、センサーによる表示の切り替えを指定/取得できます。

* 画面の向きの設定
* 画面の向きの取得

画面の向きの設定 Edit

リファレンス:http://developer.android.com/guide/topics/manifest/activity-element.html#screen

画面の向きはAndroidManifest.xml内でActivityに対してandroid:screenOrientationで設定します。






下記が指定値と結果になります。
こちらの例ではあらかじめ縦、横で背景、ビューの位置が異なるレイアウトを用意しています。

モード 縦長表示 横長表示 説明
unspecified(デフォルト) land_tall.gif port_wide.gif システムが自動選択します。(デバイスによって異なる)

ユーザの操作(エミュレータではCtrl+F11)によって切り替わります
portrait(縦固定) land_tall.gif port_tall.gif 常に縦レイアウトを使用します
landscape(横固定) land_wide.gif port_wide.gif 常に横レイアウトを使用します
user land_tall.gif port_wide.gif 現在のレイアウトに従います

ユーザの操作(エミュレータではCtrl+F11)によって切り替わります
behind land_tall.gif port_wide.gif 親のアクティビティに従います

ユーザの操作(エミュレータではCtrl+F11)によって切り替わります
sensor センサーに従います

実機がないので試せていません
nosensor センサーを無視します。ユーザの操作に基づいて回転しない点以外は、unspecifiedを指定したのと同じ動きになります。

実機がないので試せていません
▲ ▼
画面の向きの取得 Edit

現在の画面の向きはActivityから下記のように取得できます。

Configuration config = getResources().getConfiguration();
// Landscape(横長)
if(config.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Toast toast = Toast.makeText(this, "Landscape", Toast.LENGTH_SHORT);
toast.show();
}
// Portrait(縦長)
else if (config.orientation == Configuration.ORIENTATION_PORTRAIT) {
Toast toast = Toast.makeText(this, "Portrait", Toast.LENGTH_SHORT);
toast.show();
}
// Square(正方形) エミュレータではこの値は返って来ない。
else if (config.orientation == Configuration.ORIENTATION_SQUARE) {
Toast toast = Toast.makeText(this, "Square", Toast.LENGTH_SHORT);
toast.show();

}

コメント: &attachref; (^^)(^-^(^Q^(..;(^_-(--;(^^;(T-T(//(OO;&heart;☆&hatena;&tip; hintadv