有没有办法用方法或代码做“setRotation()”?

时间:2011-04-29 04:25:51

标签: android rotation orientation

所以我希望我的应用程序始终锁定设备的自然方向。所以基本上,我想强制旋转到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度转弯。

1 个答案:

答案 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!