【问题标题】:Temporarily, programmatically disable screen rotation in Qt暂时,以编程方式禁用 Qt 中的屏幕旋转
【发布时间】:2015-12-16 11:05:05
【问题描述】:

请注意:这个问题是关于 Qt C++ 框架,而不是普通的 Java API。在Java中,这个问题has already been answered

在我的应用程序的主菜单中,我真的不想担心不同类型的屏幕旋转。我想禁用屏幕旋转,直到用户转到屏幕旋转有意义的其他视图。对于主菜单,我只想使用纵向视图。

如何做到这一点?如何控制应用屏幕旋转?

【问题讨论】:

  • 如果我没记错的话(即,它是在最近半年左右添加到 Qt 中的),您需要为此使用本机 API(因为您想在运行时这样做)。我在我的一个项目中为此编写了一个小型包装类,以便在 Android 和 iOS 上执行此操作。
  • @pasbi 不是真的,早在 2015 年我问这个问题时,就已经知道永久横向模式的解决方案了。但是这个问题是关于暂时将模式更改为横向的,例如如果您想在屏幕上播放视频。
  • @TomášZato hm... 我正在尝试将屏幕永久锁定为横向,我面临的问题与链接的问题/答案中描述的完全相同。我也会对这里描述的动态解决方案感到满意。所以我想从这个角度来看它们是相关的(但肯定不是重复的)。

标签: android c++ qt


【解决方案1】:

您可以使用

设置方向
QAndroidJniObject activity = QtAndroid::androidActivity();
activity.callMethod<void>("setRequestedOrientation", "(I)V", orientation);

其中方向是代表方向的int。您可以复制the codes provided in the documentation(例如,0 锁定横向,1 锁定纵向,-1 解锁任何旋转),但我建议使用,例如,

QAndroidJniObject::getStaticField<int>("android.content.pm.ActivityInfo", "SCREEN_ORIENTATION_LANDSCAPE");

获取代码值。

此答案基于https://stackoverflow.com/a/38947312/4248972。不同的是,这个答案还解释了如何再次解锁旋转,并提供了一个示例来展示如何在不手动复制的情况下获取方向代码。

【讨论】:

    猜你喜欢
    • 2011-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-29
    • 2016-05-26
    相关资源
    最近更新 更多