【问题标题】:Lock orientation and avoid screen rotation when new activity opens新活动打开时锁定方向并避免屏幕旋转
【发布时间】:2013-06-09 14:50:04
【问题描述】:

我的应用可以在纵向和横向模式下运行,因此我在清单中为所有活动提供了此配置:

android:screenOrientation="sensor"
android:configChanges="orientation|keyboardHidden|screenSize"

但我还想为用户提供一个选项以在横向模式下锁定方向。 我在所有活动的onCreate 方法中添加了以下行:

if (lockLandscape) setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

它可以工作,但是当我垂直握住平板电脑时,新活动首先以纵向模式打开,然后转为横向模式。旋转回来和力量看起来不是很好...... 有没有办法来解决这个问题?也许以某种方式禁用传感器?

【问题讨论】:

  • onConfigurationChanged() 做,看看它是否有任何改变。
  • 当我从 onCreate 中删除此代码时,活动只会以纵向模式打开(如果我垂直握住设备)。 onConfigurationChanged 没有被触发。
  • @dop2000:您已经有了将屏幕方向锁定为横向模式的代码,所以您已经完成了一半。只需将标签修改为android:screenOrientation="nosensor"。请参阅here 了解更多信息。 Android API 18 还有一个名为 android:screenOrientation="locked" 的新标签,适用于只针对使用 API 18(又名 Android 4.3 主要版本 2)及更高版本的设备的开发人员。

标签: android android-activity orientation


【解决方案1】:

我遇到了同样的问题,现在只需使用以下代码在显示新活动之前锁定方向(然后在该活动被解除后解锁):

if (rotationEnabled)
{
    setRequestedOrientation(mSavedOrientation);
}
else
{
    mSavedOrientation = getRequestedOrientation();
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-20
    • 1970-01-01
    相关资源
    最近更新 更多