Android时时监測手机的旋转角度 依据旋转角度确定在什么角度载入竖屏布局 在什么时候载入横屏布局
2023-09-11 14:14:10 时间
一、场景描写叙述:
最近开发中遇到个问题,就是我们在做横竖屏切换的功能时。横竖屏布局是操作系统去感知的,作为开发员没法确定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.os.NetworkOnMainThreadException
- 怎样预置Android 手机 APK
- android小文章——手机照片上传服务器方法
- android application
- Android:控件布局(相对布局)RelativeLayout(转)
- 兼容 Android 4.4 透明状态栏与导航栏
- 解决Eclipse、Android Studio ADT AVD不能检测到手机
- android 一个TextView设置多种颜色
- android BLE Peripheral 手机模拟设备发出BLE广播 BluetoothLeAdvertiser
- Android开发经验一判断当前屏幕是全屏还是非全屏
- Android 通用获取Ip的方法(判断手机是否联网的方法)!!!
- android中的selector背景选择器的用法
- Android xml资源文件中@、@android:type、@*、?、@+含义和区别
- android xml中tools include的引入
- android xml布局文件属性说明
- Android学习之同一个手机中安装两个相同的项目
- Android学习之获取手机的IMEI号
- Android studio 导入githubproject
- Android编程获取手机型号,本机电话号码,sdk版本号及firmware版本号号(即系统版本号号)
- ubuntu中eclipse无法识别android手机问题
- Android回调事件传播-android学习之旅(四十五)
- 美国部分Android手机竟将用户隐私数据回传至上海服务器!
- 使用Android手机作为树莓派的屏幕
- Android Studio Error:Could not find com.android.tools.build:gradle