【问题标题】:Force android app to stay in the orientation it is started in for api level < 18强制 android 应用程序保持在 api 级别 < 18 的启动方向
【发布时间】:2016-08-02 12:25:23
【问题描述】:

我正在制作一个需要保持其启动方向的应用程序。 我知道如何使它始终处于纵向或始终处于横向,但我需要它能够以纵向或横向开始并保持相同的方向直到它被破坏。

目前我正在使用

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);

在我的 onCreate() 方法中,但它需要 API level 18 或更高版本,我需要我的应用程序在 API 级别 15 或更高版本上运行。你能提出一些建议吗?

【问题讨论】:

  • 当您的应用启动时,使用getRequestedOrientation() 获取初始方向。将其保存在单例类中,在每个活动中,访问此单例类以获取方向并使用setRequestedOrientation() 设置所有活动中的初始方向。

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


【解决方案1】:

这里是示例 sn-p,您可以使用它来获取当前屏幕配置并将其锁定在所有 android 设备上

它首先检查屏幕是否处于纵向模式,如果是,则设置纵向模式,否则设置横向

if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT){
        this.setRequestedOrientation(
                ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    } else{

        this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    }

【讨论】:

  • 感谢您的快速回复!我最终使用了你的想法,但检查了getWindowManager().getDefaultDisplay().getRotation(),因为我找不到如何检查方向是横向还是反向横向。
  • getWindowManager().getDefaultDisplay().getRotation() 会根据显示器的“自然”方向返回旋转,即对于平板电脑,它会在横向模式下返回 Surface.ROTATION_0,而对于手机,它会返回相同的值用于肖像。
  • 所以我需要处理旋转为 180 和 270 的情况,因为这意味着使用了反向。我没有设备可以测试哪个在旋转 0 时具有横向,但我想如果 getResources().getConfiguration().orientation 返回纵向或横向并将其设置为反向纵向或横向,我可以检查这两个旋转。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多