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();
	}

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

时间: 2024-08-27 16:58:13

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

Android之监测手机网络状态的广播

Android之监测手机网络状态的广播 Android 监控网络状态 Android利用广播监听设备网络连接(断网)的变化情况

Android核心基础(手机卫士的一个知识点总结)

注意:有些功能是需要权限的,在这里并没有写出来,在程序运行中,根据程序报的错误,添加相应的权限即可,里面的具体里面可能有一些小细节,没有明确的写出来,具体的需要在程序中自己调试,解决. 这个总结涵盖了Android的一些核心的内容,如四大组建Service.ContentProvider.BroadCastReceiver.Activity,而且四大组建都必须在清单文件中注册. 还涉及了Android手机底层的一些功能,如读取联系人.短信等.还有一些看似牛别点技术,什么短息拦截,电话拦截,黑名单

Android 内存监测工具 DDMS

Android 内存监测工具 DDMS --> Heap 2011年06月02日 11:18:00 幻影浪子 阅读数:72529 用 Heap监测应用进程使用内存情况的步骤如下:1. 启动eclipse后,切换到DDMS透视图,并确认Devices视图.Heap视图都是打开的:2. 将手机通过USB链接至电脑,链接时需要确认手机是处于“USB调试”模式,而不是作为“Mass Storage”:3. 链接成功后,在DDMS的Devices视图中将会显示手机设备的序列号,以及设备中正在运行的部分进程

手动为Android 4.x 手机添加自己的根证书(CA 证书)

首先看Android 4.x 系统的证书存放位置: AOSP Android系统中CA证书文件的位置在:/ system/etc/security/cacerts/一系列的以数字命名的.0文件 方法一: Android 4.0 已经支持用户安装根证书了,只需要将根证书放到sdcard根目录,然后到设置(Settings) – 安全(Security) – 从存储设备安装(Install from storage)就可以了,但是这样安装需要设置锁屏PIN或密码才可以. 但是,该操作需要每次打开手机

《Android开发卷——手机联系人T9搜索》

    自己研究了好几天联系人的T9搜索算法, 先分享出来给大家看看. 欢迎指教.如果有大神有更好的T9搜索算法, 那更好啊,大家一起研究研究,谢谢. 第一部分是比较简单的获取手机联系人. 获取联系人前提要有权限. <uses-permission android:name="android.permission.READ_CONTACTS" /> 因为手机的联系人都存储在数据库里面,所以我们只要把数据库里的信息查询出来即可. private static final St

android手机横屏和竖屏与android:configChanges

原文地址:http://woshixy.blog.51cto.com/5637578/1081913 目前大多数手机都支持重力感应随之而来的就是屏幕方向改变的问题.对应普通开发者来说屏幕的随意改变也会带来困扰.在Google自带的doc里可以看到,如果设备的配置(Resources.Configuration中进行了定义)发生改变,那么所有用户界面上的东西都需要进行更新以适应新的配置.因为Activity是与用户交互的最主要的机制,它包含了处理配置改变的专门支持.除非你特殊指定,否则当配置发生改

Android开发之手机铃声代码实现

如果读到的是音频文件路径,需要先将音乐文件插入到多媒体库.如:path传入:/mnt/sdcard/mp3/a.mp3 //设置--铃声的具体方法 public void setMyRingtone(String path) { File sdfile = new File(path); ContentValues values = new ContentValues(); values.put(MediaStore.MediaColumns.DATA, sdfile.getAbsolutePa

Android之——获取手机安装的应用程序

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47114331 前几篇有关Android的博文中,向大家介绍了几个项目中常用的实用功能,那么在这篇博文中,我将向大家介绍如何获取Android手机中已经安装的手机应用程序,实用过金山手机卫士或者360手机卫士的童鞋都知道,这些软件都可以获取到当前手机中安装的应用程序.那么,这些功能是如何实现的呢?就让我们一起来看看这些功能具体是如何实现的吧. 一.原理 原理很简单,我们通过Andr

【Android】Android中不同手机分辨率适配问题

在项目开发的过程中,同一个布局对应不同的手机会显示出不同的效果.导致这个现象产生的原因是不同手机的分辨率不同.在android sdk提供的帮助文档中,我们可以看到各种手机的分辨率和对应的屏大小.QVGA (240x320),WQVGA400(240x400),WQVGA432 (240x432),HVGA (320x480),WVGA800 (480x800),WVGA854 (480x854). 目前android手机的分辨率大致就是帮助文档中描述的几种,我们可以用两种方式进行不同手机的适配