协慌网

登录 贡献 社区

在 Android 中禁用横向模式?

如何在我的 Android 应用中禁用某些视图的横向模式?

答案

android:screenOrientation="portrait"到 AndroidManifest.xml 中的活动。例如:

<activity android:name=".SomeActivity"
    android:label="@string/app_name"
    android:screenOrientation="portrait" />

编辑:由于这已成为一个超级流行的答案,我感到非常内疚,因为强迫肖像很少是解决它经常应用的问题的正确方法。
强迫肖像的主要警告:

  • 这并不能免除您必须考虑活动生命周期事件或正确保存 / 恢复状态。除了应用程序轮换之外,还有很多东西可以触发活动破坏 / 娱乐,包括不可避免的事情,如多任务处理。没有捷径; 学习使用 bundle 和retainInstance片段。
  • 请记住,与相当统一的 iPhone 体验不同,有许多设备,其中肖像不是明显受欢迎的方向。当用户使用带有硬件键盘或游戏手柄的设备(包括 Droid 1-4,Xperia Play 或 Nvidia Shield)时,强制纵向可以使您的应用程序成为一个巨大的可用性麻烦(特别是在盾牌上)。如果您的应用程序没有非常具体的用例,这会导致支持其他方向的直接负面体验,那么您可能不应该强迫横向。我说的是 “这是一款遥控器应用程序,用于仅在设备的一侧有 IR 发射器的手机”,或 “这是一个收银机应用程序,适用于固定使用的一种特定型号的平板电脑硬件码头。“

因此,大多数应用应该让手机传感器,软件和物理配置自行决定用户如何与您的应用进行互动。但是,如果您对用例中sensor方向的默认行为不满意,您可能仍需要考虑一些案例:

  • 如果您的主要关注点是意外方向改变,您认为设备的传感器和软件无法很好地处理(例如,在基于倾斜的游戏中),请考虑支持横向和纵向,但使用nosensor进行定位。大多数手机上的大多数平板电脑和人像都有这种情况,但我仍然不建议大多数 “普通” 应用程序(有些用户喜欢在手机上键入横向软键盘,许多平板电脑用户都是纵向阅读 - 和你应该让他们)。
  • 如果由于某种原因你仍然需要强制肖像, sensorPortrait对于 Android 2.3+, sensorPortrait可能比portrait更好; 这允许颠倒的肖像,这在平板电脑使用中非常常见。

在阅读这篇文章之前我不知道AndroidManifest.xml文件切换,所以在我的应用程序中我使用了它:

setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);     //  Fixed Portrait orientation

在您的清单文件中添加此android:screenOrientation="portrait" ,您可以像这样声明您的活动

<activity android:name=".yourActivity"
    ....
    android:screenOrientation="portrait" />

如果你想用 java 代码试试

setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

在为onCreate()活动调用setContentView方法之前。

希望这对所有人都有帮助并且易于理解......