【问题标题】:Android - Forcing orientation in smartphones onlyAndroid - 仅在智能手机中强制定向
【发布时间】:2012-10-26 15:13:58
【问题描述】:

我的应用有 3 个屏幕,所有屏幕在智能手机中都必须是纵向的,而对于平板电脑来说必须是两个方向。

Unitl 现在我在OnCreate 中使用以下代码:

if (!getResources().getBoolean(R.bool.isTablet)) {
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}

但是,如果我将智能手机置于横向模式并启动应用程序,它将以横向显示几秒钟,然后旋转为纵向。

这里的许多答案建议通过清单锁定方向,但这会锁定平板电脑中的方向,这是不希望的。

如果您能提供任何能帮助我找到解决方案的信息,我将不胜感激。谢谢。

【问题讨论】:

  • 你什么时候调用这个代码?如果您还没有,请尝试调用setContentView() 之前进行。
  • onCreate 内的第一行,setContentView() 之前完成。

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


【解决方案1】:

如果是平板电脑,您可以将其锁定在 Manifest 中,然后用代码解锁。

这对您的情况可能无关紧要,但我了解到 Nexus 7 不会使用您使用的方法将自己报告为平板电脑。不过我不确定这是否准确,我自己从未尝试过。

【讨论】:

  • 我到底要怎么做才能在代码中解锁? setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED)?因为我认为它会在平板电脑中产生相反的效果,它们会以纵向加载,然后旋转为横向。顺便说一句,为了检测设备是否是平板电脑,我正在检查屏幕尺寸、大型设备及以上设备,将布尔资源 isTablet 设置为 true。
  • 哦,我以为你使用了一些我听说过的内置布尔值。它可能会在平板电脑中引起相反的效果,但我想不出任何其他方法来做到这一点。您可以在应用启动时有一个启动画面,确定显示时的方向要求,然后在确定后进入实际应用。
  • 其中一个屏幕已经是启动屏幕,问题发生的地方。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-09
  • 1970-01-01
  • 1970-01-01
  • 2013-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多