zoukankan      html  css  js  c++  java
  • 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();
    	}
    



         

  • 相关阅读:
    Java的JXL操作xls形式
    UILabel iOS添加文本控件
    并行随机梯度下降
    ArcGIS For Flex给定两个
    如何判断一个网址是由哪种语言写的
    ArrayList线程不安全?
    java总结,错误集
    centos安装Chromium
    读书笔记:《从一到无穷大》
    读书笔记:《数学之美》
  • 原文地址:https://www.cnblogs.com/cxchanpin/p/6876903.html
Copyright © 2011-2022 走看看