場景
現在做的項目是同一個包,在手機上做查詢業務,平板辦理業務,所以就需要在手機上面是豎屏,平板上面時橫屏
於是在基類Activity中就有了這段代碼:
@Override
protected void onResume() {
super.onResume();
if (DisplayUtil.isPad(mContext)) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
} else {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
}
以爲達到效果了,但是不盡人意!!
發現問題
發現在不同的activity跳轉的過程中總是倒轉(橫屏倒是橫屏。。。。)
尋找問題
找了‘半天’想到了manifest文件,有對部分activity設置方向,因爲這代碼最開始是爲phone開發的,所以就有之前的activity都有這麼一行代碼
android:screenOrientation="portrait"
解決問題
刪掉manifest中的 screenOrientation ,問題解決
爲什麼
在activity加載過程中,是先去manifest加載配置,如果設置了豎屏,那麼在這個過程設備方向就被重置了,然後在加載代碼,這時再設置屏幕橫屏,就默認是 SCREEN_ORIENTATION_LANDSCAPE(0),而不是SCREEN_ORIENTATION_REVERSE_LANDSCAPE(8),在沒有搖晃設備的情況下也就不再改變方向;