【问题标题】:Negate orientation change - Android否定方向更改 - Android
【发布时间】:2025-11-25 11:45:02
【问题描述】:

我正在开发一个只能横向显示部分页面的应用程序,我不想锁定屏幕显示,我希望拒绝 Android 进行方向更改。

有什么我可以用的吗?例如,在运行时方向更改时,Android 会询问是否可以转到该方向?

如果没有,如何锁定当前屏幕方向?我知道 setRequestedOrientation 可以做到这一点,但它意味着发现当前方向(甚至发现正确的方向,如“正常”或“反向”肖像/风景)并锁定它。

编辑: 这个应用程序只有一个活动,根据它的状态(改变时间和用户输入)它可以旋转或不旋转,这是我的问题。

http://developer.android.com/guide/topics/resources/runtime-changes.html 所见,关于配置更改:

"自行处理配置更改 防止系统在某些配置更改期间重新启动您的 Activity,但在配置发生更改时接收回调,以便您可以根据需要手动更新您的 Activity。"

即使配置发生变化,我也希望在此之前阻止这种行为。

【问题讨论】:

  • 只是为了补充@BrianNickel 所说的内容,this answer 可能就是您正在寻找的内容。您可能还想查看this
  • 我的问题是如何在运行时拒绝设备不改变方向
  • 我尝试了一些 onConfigurationChanges 方法不起作用,即使我消耗了屏幕旋转并显示旋转的旧方向的事件,但这也使我的屏幕不会重新创建视图,这也很重要。
  • “即使配置发生变化,我也希望在此之前阻止这种行为”——除非编写自己的自定义固件,否则这是不可能的。您无法阻止配置更改。您最多可以管理配置更改的效果

标签: android screen-orientation orientation-changes android-orientation android-screen


【解决方案1】:

在每个活动中添加一个。

public void checkActivityPos() {

    if(somthing == "this") {
        myActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    }else {
        myActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    }
}

【讨论】:

  • 其实只有一个activity,根据它的状态可以旋转或者不旋转,这是我的问题。
  • 你可以随时在你的activity中调用这个方法。
  • 我同意@Dr.Dredel 也许使用条件语句来检查活动在哪里......见我上面的编辑。
  • 好吧,也许这可以是一种方法,我试试看
  • 我用这个解决方案解决了,但这不是我提出的问题的答案(关于拒绝改变而不是强迫改变)。谢谢!
最近更新 更多