の書き込みがあるためDisplay.getRotationは()、解決策ではありません現在の設定状態を保存します。 short is_landscape = -1;
oncheckedchangeリスナーあなたの状態を永久に設定して保存できます。
if (is_landscape == -1) {
Configuration config_screen = getResources().getConfiguration();
int orientation = config_screen.orientation;
if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
setRequestedOrientation(Configuration.ORIENTATION_LANDSCAPE);
is_landscape = 0;
} else {
setRequestedOrientation(Configuration.ORIENTATION_PORTRAIT);
is_landscape = 1;
}
}
問題は、デバイスを回転するたびにアクティビティを再作成して状態を失うことです。したがって、is_landscape変数を
に保存する
@Override
protected void onSaveInstanceState(Bundle outState) {
oustate.putExtra("last_state", is_landscape);
super.onSaveInstanceState(outState);
}
you can restore your position on on restore instance
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
is_landscape = savedInstanceState.getShort("last_state");
if (is_landscape == 0) {
setRequestedOrientation(Configuration.ORIENTATION_LANDSCAPE);
} else if (is_landscape == 1) {
setRequestedOrientation(Configuration.ORIENTATION_PORTRAIT);
}
super.onRestoreInstanceState(savedInstanceState);
}
インスタンスを保存して復元したくない場合は、使用することができます。
アンドロイド:あなたのmenifestファイルでconfigChanges =「方向」
が、それはあなたのデバイスの向きを変える上での活動を再作成することはできません。
うまくいくと思います。
あなたが逆の状態を検出する場合も、あなたは使用することができます
int型状態=(ウィンドウマネージャ)getSystemService(WINDOW_SERVICE))getDefaultDisplay()getRotation()。。。
状態がSurface.ROTATION_0である場合、それは状態がSurface.ROTATION_90ある場合、それは状態がSurface.ROTATION_180あれば状態はSurface.ROTATION_270それは意志その後であればそれは逆肖像 あろう景色 なり肖像 あろう逆景観であること
Surface.ROTATION_0とSurface.ROTATION_180の場合は、ポートレートを設定します。 は、Surface.ROTATION_90とSurface.ROTATION_270の場合にランドスケープを設定します。
また、向きが回転する代わりに回転を設定して、デバイスが指向の状態ではなく回転した状態になるようにすることもできます。
正しい向きを取得する方法をご存知ですか? – styanton
'ディスプレイの表示=((WindowManager)getSystemService(WINDOW_SERVICE))。getDefaultDisplay(); int orientation =表示。getOrientation(); '//ポートレート= 1;風景= 2; – Pallavi
@styantonはあなたに合った答えを受け入れます。 – Pallavi