以下是我需要處理方向更改不同的基本操作,基本上每當onConfigurationChanged()事件由於設備方向更改而觸發時,我將顯示一個對話框窗口並詢問用戶是否要更新方向,根據用戶操作我更新到風景/人像或保持相同的方向。手動確認方向更改
public class MyActivity extends Activity {
..
..
private boolean mFlagConfigChangeManual = false;
@Override
public void onConfigurationChanged(Configuration newConfig) {
Log.e("onConfigurationChanged", "mFlagConfigChangeManual="+mFlagConfigChangeManual);
super.onConfigurationChanged(newConfig);
int orient = -1;
if (!mFlagConfigChangeManual) {
if (newConfig.orientation == newConfig.ORIENTATION_LANDSCAPE) {
mFlagConfigChangeManual = true;
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
orient = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
} else if (newConfig.orientation == newConfig.ORIENTATION_PORTRAIT) {
mFlagConfigChangeManual = true;
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
orient = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
}
} else {
mFlagConfigChangeManual = false;
return;
}
final int orient2 = orient;
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case DialogInterface.BUTTON_POSITIVE:
if (orient2 >= 0) {
mFlagConfigChangeManual = true;
setRequestedOrientation(orient2);
}
break;
case DialogInterface.BUTTON_NEGATIVE:
break;
}
}
};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Would you like to update orientation?")
.setPositiveButton("Yes", dialogClickListener)
.setNegativeButton("No", dialogClickListener).show();
}
我已經在清單文件中所要求的變化,但我面對的兩個問題,則顯示第一時間定向確認對話框,它的工作原理,但是當我重新定位再次,它不會做任何事情,基本上onConfigurationChanged()是不叫另一次。我注意到的另一個問題是;
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);方法在橫向模式下將視圖顛倒。這可以做得更好嗎?
但是當我在第一塊代碼onConfigurationChanged手動調用setRequestedOrientation()事件被觸發,我正在過濾usi ng mFlagConfigChangeManual標誌,第二次同樣的事情沒有奏效。 – 2015-03-03 13:38:48
@AbhishekK,要重新啓用傳感器,您需要調用setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR); – 2015-03-03 13:43:00
是的,這是完美的..謝謝。你可以在你的答案中包含這些細節。 – 2015-03-03 13:45:15