画面の向き(ScreenOrientation) の変更点

アクティビティに対して画面の縦・横の固定や、センサーによる表示の切り替えを指定/取得できます。
#BR
- [[画面の向きの設定>#setOrientation]]
- [[画面の向きの取得>#getOrientation]]
#BR
* &aname(setOrientation){画面の向きの設定}; [#aa880132]
#BR
リファレンス:[[http://developer.android.com/guide/topics/manifest/activity-element.html#screen>http://developer.android.com/guide/topics/manifest/activity-element.html#screen]]
#BR
画面の向きは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>

#BR
下記が指定値と結果になります。
''こちらの例ではあらかじめ縦、横で背景、ビューの位置が異なるレイアウトを用意しています。''
#BR
|~モード|~縦長表示|~横長表示|説明|
|~unspecified(デフォルト)|&attachref(land_tall.gif,nolink);|&attachref(port_wide.gif,nolink);|システムが自動選択します。(デバイスによって異なる)&br;&br;ユーザの操作(エミュレータではCtrl+F11)によって切り替わります|
|~portrait(縦固定)|&attachref(land_tall.gif,nolink);|&attachref(port_tall.gif,nolink);|常に縦レイアウトを使用します|
|~landscape(横固定)|&attachref(land_wide.gif,nolink);|&attachref(port_wide.gif,nolink);|常に横レイアウトを使用します|
|~user|&attachref(land_tall.gif,nolink);|&attachref(port_wide.gif,nolink);|現在のレイアウトに従います&br;&br;ユーザの操作(エミュレータではCtrl+F11)によって切り替わります|
|~behind|&attachref(land_tall.gif,nolink);|&attachref(port_wide.gif,nolink);|親のアクティビティに従います&br;&br;ユーザの操作(エミュレータではCtrl+F11)によって切り替わります|
|~sensor|||センサーに従います&br;&br;実機がないので試せていません|
|~nosensor|||センサーを無視します。ユーザの操作に基づいて回転しない点以外は、unspecifiedを指定したのと同じ動きになります。&br;&br;実機がないので試せていません|
* &aname(getOrientation){画面の向きの取得}; [#aa880132]
現在の画面の向きは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();
}

// コメントフォーム
#BR
----
#comment(below,noname)

- 参考になりました。 (//  --  &new{2017-07-11 (火) 12:24:46};
- おっぱい吸う。ウワッハア!! --  &new{2015-04-27 (月) 16:51:43};
- すみません、先のコメントは説明を読み間違えてました。無視してください。 --  &new{2013-04-18 (木) 15:33:43};
- nosensorの説明が違いませんか?横長の端末ではlandscapeと同じになります。つまりセンサーに関わらず端末元来の向きに固定するという値だと思います。 --  &new{2013-04-18 (木) 15:29:23};
- あかさたな  --  &new{2012-10-07 (日) 22:04:05};
- 画面が正方形のエミュレータを使えば取れる --  &new{2011-12-26 (月) 15:18:05};
- あああ --  &new{2011-05-17 (火) 15:09:54};
- 画面向き イベント --  &new{2009-08-03 (月) 19:13:06};