android - 如何防止屏幕自动旋转但防止 Activity 旋转

标签 android android-activity accelerometer autorotate

无论如何,这听起来可能是一个新手问题,因为我是 Android 开发新手。

基本上,我需要做什么来防止 Activity 改变其旋转,但同时我需要检测设备方向变化,即设备方向是否已从顶部更改为底部,或从顶部更改为左肖像等。

在 iOS 中,有一个类似的 - (BOOL)shouldAutorotateToInterfaceOrientation ,您可以在其中处理设备方向更改并告诉 View 是否希望它自动旋转。 请注意,不要对加速度计数据进行任何手动数据处理。

所以基本上我想检测设备的方向变化并防止 Activity 旋转。 我还在使用传感器的数据来检测震动。但 Android 内部会进行一些信号过滤,以便决定何时旋转 UI。所以基本上我需要 catch 那个事件。任何人都可以帮忙吗?


我的问题的简单表述:我需要检测 Android 设备方向变化,而无需手动处理传感器数据,同时保持 Activity 方向坚持某个方向

最佳答案

如果您想将一个方向固定为横向,请转到 AndroidManifest 并在您的 Activity 中执行此操作

<activity
    android:label="@string/app_name"
    android:name=".LoginScreen" 
    android:screenOrientation="landscape"
    android:configChanges="keyboardHidden|orientation">
    <intent-filter >
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity> 

添加此...如果是纵向,则将其更改为 android:screenOrientation="portrait"

有关动议,请参阅 @thepoosh 链接,即 http://www.techrepublic.com/blog/app-builder/a-quick-tutorial-on-coding-androids-accelerometer/472

关于android - 如何防止屏幕自动旋转但防止 Activity 旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11221745/

相关文章:

android - 使用另一个应用程序更新您的 Android 应用程序

android - 如何从 Activity 的包含类启动 Intent

java - handler.sendMessage() 未到达 android 中的handleMessage()

java - android 在另一个 Activity 发生更改后更新 Activity TextView

ios - 使用 iOS 7 在后台获取步骤

objective-c - 我应该如何从设备运动中计算 "world coordinates"的 3 轴?

android - 如何使用 Android 加速度计检测步行

android - 如何使 Logo 和操作栏透明?

android - 如何从设备上的命令行卸载 android 应用程序

android - Gradle Kotlin DSL 找不到 java.io 包