您的位置:首页 > 移动开发 > Android开发

Android时时监測手机的旋转角度 依据旋转角度确定在什么角度载入竖屏布局 在什么时候载入横屏布局

2017-05-19 10:02 513 查看
一、场景描写叙述:

最近开发中遇到个问题,就是我们在做横竖屏切换的功能时。横竖屏布局是操作系统去感知的,作为开发员没法确定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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: