Top > 画面の向き(ScreenOrientation)

画面の向き(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};