【问题标题】:Android: How to stick to the same orientation the Activity started withAndroid:如何坚持 Activity 开始时的相同方向
【发布时间】:2013-03-07 22:05:52
【问题描述】:

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

android:screenOrientation="landscape|portrait"

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

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)

但是,如何将活动锁定到开始的方向?例如,如果它开始纵向,它应该坚持下去。

谢谢!

【问题讨论】:

  • 你的意思是如果用户以纵向模式握住手机,应用程序应该以纵向模式启动?我认为默认情况下它已经这样做了......
  • 我也遇到了同样的问题。请给我解决方案。

标签: android android-activity


【解决方案1】:

在您的应用启动时使用getResources().getConfiguration().orientation,然后像上面那样以编程方式设置方向。该方法将返回ORIENTATION_LANDSCAPEORIENTATION_PORTRAIT

【讨论】:

  • 这就差不多完成了,问题是有两个风景:SCREEN_ORIENTATION_LANDSCAPESCREEN_ORIENTATION_REVERSE_LANDSCAPE。肖像也是如此。所以,由于getResources().getConfiguration().orientation 只返回纵向或横向(而不是反向),我可能会弄错。
【解决方案2】:

找到解决办法:

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

找到它here

【讨论】:

    【解决方案3】:

    我就是这样做的:

    android:screenOrientation="portrait"
    android:configChanges="keyboard|keyboardHidden|orientation"
    

    在清单中的活动中

    【讨论】:

    • 这不好:方向将始终纵向。我希望它坚持 Activity 开始的方向,可能是横向的。
    猜你喜欢
    • 2020-07-24
    • 1970-01-01
    • 2021-05-09
    • 1970-01-01
    • 2020-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多