アクティビティの縦向きと横向きに異なるレイアウトを適用する必要があります。また、縦向きの場合はアラートを表示する必要があります。
android:configChanges="orientation|keyboardHidden"
AndroidManifest で指定しています。また、次のように onConfigurationChanged メソッドをオーバーライドします。
@Override
public void onConfigurationChanged(Configuration newConfig)
{
Log.d("tag", "config changed");
super.onConfigurationChanged(newConfig);
int orientation = newConfig.orientation;
if (orientation == Configuration.ORIENTATION_PORTRAIT)
Log.d("tag", "Portrait");
else if (orientation == Configuration.ORIENTATION_LANDSCAPE)
Log.d("tag", "Landscape");
else
Log.w("tag", "other: " + orientation);
....
}
横向きから縦向きに回転すると、ログは次のようになります。
config changed
Portrait
しかし、縦から横に変更すると、次のようになります
config changed
Portrait
config changed
Landscape
onConfigurationChanged が 2 回呼び出されるのはなぜですか? どうすれば回避できますか?