如何在移动应用程序上仅在一个页面上锁定方向

How to lock orientation for only on one page on Mobile App?

本文关键字:一个 方向 锁定 应用 移动 应用程序 程序上      更新时间:2023-09-26

我们正在开发混合应用程序,因此从编码的角度来看,大部分工作只在HTML5、CSS3和Javascript/JQuery中进行。

能够在SO 上找到相关的帖子

方向锁定

如何在Android中禁用方向更改?

然而,我们只需要在一个页面上锁定方向,而没有在清单文件中添加设置的自由。正在寻找一个基于Javascript/JQuery的解决方案或可以使用Javascript调用的Android插件?

您可以在Android Manifest:中指定每个活动的方向

<activity
    android:name=".activities.LoginActivity">
</activity>
<activity
    android:name=".activities.HomeActivity"
    android:screenOrientation="userLandscape">
</activity>

在上面的示例中,当用户更改方向时,LoginActivity将旋转,但HomeActivity将始终处于横向。

您可以通过在onCreate()中调用setContentView()之前调用setRequestedOrientation(),以编程方式设置一个Activity的方向,如下所示:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    ...
}

您还可以通过添加以下内容来指定清单中一个Activity的方向:

android:screenOrientation="portrait"

像这样:

<activity android:name="com.example.ui.MainActivity"
          android:screenOrientation="portrait" />

我对应用程序也有类似的要求。它无法锁定方向,但我可以使用"设备方向"事件检测方向变化,该事件可以作为window.addEventListener("deviceorientation", hadlerFunction, true);处理。我所做的是,我显示了一个提示用户更改tge方向的警报。它不是一个混合应用程序。但是,如果您遵循此链接[1]

[1] :在PhoneGap/Cordova中使用JavaScript锁定设备方向的能力您会得到一些问题的输入。

找到了一个可以完成这项工作的非常简单的插件:

pg插件屏幕方向

非常易于使用:

To lock the screen to Landscape: navigator.screenOrientation.set('landscape');
To lock the screen to Portrait: navigator.screenOrientation.set('portrait');
To unlock: navigator.screenOrientation.set('fullSensor');

为我们工作。