アクティビティに対して画面の縦・横の固定や、センサーによる表示の切り替えを指定/取得できます。
画面の向きの設定
リファレンス:http://developer.android.com/guide/topics/manifest/activity-element.html#screen
画面の向きはAndroidManifest.xml内でActivityに対してandroid:screenOrientationで設定します。
<!-- ScreenOrientationSample --> <activity android:name="android.wiki.sample.ScreenOrientationSampleActivity" android:label="@string/app_name" android:screenOrientation="unspecified"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
下記が指定値と結果になります。
こちらの例ではあらかじめ縦、横で背景、ビューの位置が異なるレイアウトを用意しています。
モード | 縦長表示 | 横長表示 | 説明 |
---|---|---|---|
unspecified(デフォルト) | システムが自動選択します。(デバイスによって異なる) ユーザの操作(エミュレータではCtrl+F11)によって切り替わります | ||
portrait(縦固定) | 常に縦レイアウトを使用します | ||
landscape(横固定) | 常に横レイアウトを使用します | ||
user | 現在のレイアウトに従います ユーザの操作(エミュレータではCtrl+F11)によって切り替わります | ||
behind | 親のアクティビティに従います ユーザの操作(エミュレータではCtrl+F11)によって切り替わります | ||
sensor | センサーに従います 実機がないので試せていません | ||
nosensor | センサーを無視します。ユーザの操作に基づいて回転しない点以外は、unspecifiedを指定したのと同じ動きになります。 実機がないので試せていません |
画面の向きの取得
現在の画面の向きは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();
}
- 参考になりました。 -- 2017-07-11 (火) 12:24:46
- おっぱい吸う。ウワッハア!! -- 2015-04-27 (月) 16:51:43
- すみません、先のコメントは説明を読み間違えてました。無視してください。 -- 2013-04-18 (木) 15:33:43
- nosensorの説明が違いませんか?横長の端末ではlandscapeと同じになります。つまりセンサーに関わらず端末元来の向きに固定するという値だと思います。 -- 2013-04-18 (木) 15:29:23
- あかさたな -- 2012-10-07 (日) 22:04:05
- 画面が正方形のエミュレータを使えば取れる -- 2011-12-26 (月) 15:18:05
- あああ -- 2011-05-17 (火) 15:09:54
- 画面向き イベント -- 2009-08-03 (月) 19:13:06