当我的设备旋转180度时我需要激活一些东西(getRotation()应该返回2)。但是,我读过的帖子只说0度,90度和270度是收到通知的唯一角度。这个设备是否具体? 什么设备返回2?
答案 0 :(得分:2)
每当您旋转设备时,系统都会调用您的onCreate()
方法,因此您可以通过调用活动的onCreate()
来找到设备的轮换次数:
getWindowManager().getDefaultDisplay().getRotation();
然而,它不会检测到旋转常数2.根据API,未指定是方向的默认值:
默认值。系统选择方向。政策呢 使用,因此在特定环境中做出的选择可能会有所不同 从设备到设备。
我猜测screenOrientation:unspecified
不会检测到所有4个角度。从API我们也可以看到几个选项,其中一个是“fullsensor”和api状态:
方向由任何设备方向传感器决定 4个方向。这类似于“传感器”,除了这允许 任何4种可能的屏幕方向,无论是什么 设备通常会这样做(例如,某些设备通常不会使用 反向纵向或反向横向,但这使那些)。添加 在API级别9中。
所以要解决此问题,请转到您的清单文件并为您的活动添加屏幕方向,如下所示:
<activity
android:name="com.example.androidactivitystart.ActivityA"
android:label="@string/app_name"
android:screenOrientation="fullSensor" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
现在,当你拨打getWindowManager().getDefaultDisplay().getRotation();
时,它会检测所有角度,这是我运行的试验的logCat输出:
02-12 19:45:30.065:D / cenas(26085):开始时叫:1
02-12 19:45:31.433:D / cenas(26085):开始时叫:0
02-12 19:45:32.678:D / cenas(26085):开始时叫:3
02-12 19:45:34.356:D / cenas(26085):开始时叫:2
如您所见,检测到所有4个可能的角度。显然不适用于Android版本较低的设备。 9.
如果您需要其他内容,请链接到API:http://developer.android.com/guide/topics/manifest/activity-element.html#screen