Android:如何坚持活动开始时的方向

Android:如何坚持活动开始时的方向,android,android-activity,Android,Android Activity,我知道如何将活动锁定在特定方向(在AndroidManifest.xml中): 我知道如何以编程方式锁定特定方向: setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) 但是,如何将活动锁定到从开始的方向?e、 如果它是从肖像开始的,它应该坚持这样做 谢谢 在应用程序启动时使用getResources().getConfiguration().orientation,然后像上面那样通过编程设置方向。该方法将返回ORI

我知道如何将活动锁定在特定方向(在AndroidManifest.xml中):

我知道如何以编程方式锁定特定方向:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
但是,如何将活动锁定到从开始的方向?e、 如果它是从肖像开始的,它应该坚持这样做

谢谢

在应用程序启动时使用
getResources().getConfiguration().orientation
,然后像上面那样通过编程设置方向。该方法将返回
ORIENTATION\u横向
ORIENTATION\u纵向

我就是这样做的:

android:screenOrientation="portrait"
android:configChanges="keyboard|keyboardHidden|orientation"
在清单中的活动中

找到了一个解决方案:

switch (((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay().getRotation()) {
  case Surface.ROTATION_90:
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    break;
  case Surface.ROTATION_180:
    setRequestedOrientation(9/* reversePortait */);
    break;
  case Surface.ROTATION_270:
    setRequestedOrientation(8/* reverseLandscape */);
    break;
  default :
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}

找到了。

你的意思是如果用户在纵向模式下握住手机,应用程序应该在纵向模式下启动吗?我想它已经默认了…我也面临同样的问题。请给我一个解决方案。这几乎完成了,问题是有两种情况:屏幕方向和屏幕方向。肖像也一样。因此,由于
getResources().getConfiguration().orientation
只返回纵向或横向(而不是反向),我可能会弄错。这不好:方向总是纵向的。我希望它坚持活动开始的方向,可能是横向的。
switch (((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay().getRotation()) {
  case Surface.ROTATION_90:
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    break;
  case Surface.ROTATION_180:
    setRequestedOrientation(9/* reversePortait */);
    break;
  case Surface.ROTATION_270:
    setRequestedOrientation(8/* reverseLandscape */);
    break;
  default :
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}