所以我希望我的应用程序始终锁定设备的自然方向。所以基本上,我想强制旋转到0度。这里有一个getRotation()
方法:
http://developer.android.com/reference/android/view/Display.html
但是,没有setRotation(int rotation)可以接受这里找到的Surface.ROTATION_X
个参数之一:
http://developer.android.com/reference/android/view/Surface.html
那么,有一些方法可以使用一行始终有效的代码吗?或者这是否必须使用一些代码?
我唯一能想到的手动解决方案如下,但我对它有些担忧。
我可以使用display.getRotation()
。然后我会检查它是0度还是180度,之后我会得到显示器的高度和宽度,看看哪一个比另一个长。如果看起来我处于横向模式,那么我就会知道该设备的自然方向是风景,所以我可以将其设置为横向。但是如果旋转是270或90,那么我会知道自然方向是肖像,我可以将它设置为肖像。
但是,我担心的是这样做总是有效的。假设用户在执行这段代码时正在旋转屏幕,如果设备在我使用getRotation()
方法之间改变方向,并使用一些if语句检查宽度与高度,我认为它可能会把一切都抛在脑后。如果我将其放在onCreate()
或onResume()
中会怎样?事情可能会变得怪异吗?
由于用户转动设备,屏幕重定向是否可能导致onCreate()
或onResume()
中断?另一个问题是,如果你将设备翻转180度,活动永远不会被破坏,所以我认为这种情况的行为可能是90度转弯,或180度转弯。
答案 0 :(得分:1)
您可以在清单中“设置”屏幕方向。见这里:http://developer.android.com/guide/topics/manifest/activity-element.html#screen
<activity
android:name=".Activity"
android:screenOrientation="portrait"
android:theme="@style/Theme.D1"
android:label="@string/title_activity"/>
您可能正在寻找的价值是; “user”用户当前的首选方向。但是,我会在几个测试用例中对此进行测试以确定。 HTH!