码迷,mamicode.com
首页 > 移动开发 > 详细

Android时时监测手机的旋转角度 根据旋转角度确定在什么角度加载竖屏布局 在什么时候加载横屏布局

时间:2015-07-27 16:24:34      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:android   屏幕旋转   监听   

一、场景描述:

     近期开发中遇到个问题,就是我们在做横竖屏切换的功能时,横竖屏布局是操作系统去感知的,作为开发员没法确定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();
	}



     

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android时时监测手机的旋转角度 根据旋转角度确定在什么角度加载竖屏布局 在什么时候加载横屏布局

标签:android   屏幕旋转   监听   

原文地址:http://blog.csdn.net/qinyunying/article/details/47084933

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!