一、場景描寫叙述:
最近開發中遇到個問題,就是我們在做橫豎屏切換的功能時。橫豎屏布局是作業系統去感覺的,作為開發員沒法确定Activity在什麼時候載入橫屏布局,在什麼時候載入豎屏布局。是以為了找到載入橫屏布局與豎屏布局的分界點,我特别監控了螢幕旋轉的角度。看在什麼樣的角度會載入橫屏布局,在什麼樣的角度載入豎屏布局。
二、螢幕旋轉度數變化示意圖
度數變化,拿着手機順時針旋轉,度數會越變越大。
三、在Activity中監聽手機的旋轉角度,上代碼。/**
* 時時監測螢幕方向是否發生改變
* @author wilson.xiong
*/
class MyOrientationDetector extends OrientationEventListener {
public MyOrientationDetector(Context context) {
super(context);
}
@Override
public void onOrientationChanged(int orientation) {
//假設螢幕旋轉被打開。則設定螢幕可旋轉
//0-57度 125-236度 306-360度 這些區間範圍内為豎屏
//58-124度 237-305度 這些區間範圍内為橫屏
if ((orientation == -1 || (orientation >= 0) && (orientation <= 57)) || ((orientation >= 125) && (orientation <= 236)) || (orientation >= 306 && orientation <= 360)) {
mScreenOrientation = 1;//豎屏
} else if ((orientation >= 58 && orientation <= 124) || ((orientation >= 237 && orientation <= 305))) {
mScreenOrientation = 0;//橫屏
}
// mOrientation = orientation;
}
}
該類的用法:
(1)在onResume()中調用enable()方法監聽角度變化
@Override
public void onResume() {
super.onResume();
mDetector.enable();
if (!isFirst) {
if (GTConfig.instance().hasDickLoaded) {
GTSQuote.updateGTSQuoteList();
}
refreshData();
} else {
isFirst = false;
}
}
(2)在onPause()方法中調用disable()方法停止監聽
@Override
public void onPause() {
super.onPause();
mDetector.disable();
}