我正在开发一个 Android 应用程序,当用户旋转设备时,我不想将其方向更改为横向模式。另外,我希望锁定方向在手机上为纵向模式,在平板电脑上为横向模式。这可以实现吗,如果可以,如何实现?谢谢。
9 回答
您只需在文件的活动元素内定义以下属性AndroidManifest.xml
。它会将您的方向限制为纵向。
安卓:screenOrientation="人像"
例子:
<activity
android:name="com.example.demo_spinner.MainActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" >
</activity>
如果您希望它适用于整个应用程序,请在应用程序标记内定义以下属性,如下所示:
<application>
android:screenOrientation="sensorPortrait"
</application>
另外,根据 Eduard Luca 在下面的评论,screenOrientation="sensorPortrait"
如果您想启用 180 度旋转,也可以使用。
你必须android:screenOrientation="portrait"
在你的AndroidManifest.xml
. 这将在您的<activity>
标签中完成。
此外,Android 开发者指南指出:
[...] 您还应该明确声明您的应用程序需要纵向或横向的元素。例如,
<uses-feature android:name="android.hardware.screen.portrait" />
。
我可以看到您已经接受了一个不能完全解决您的问题的答案:
android:screenOrientation="portrait"
这将强制您的应用在手机和平板电脑上都是纵向的。
您可以通过使用将应用程序强制设置为设备的“首选”方向
android:screenOrientation="nosensor"
这将导致您的应用程序在大多数手机上强制为纵向,而在平板电脑上强制为横向。有许多带有键盘的手机是为横向模式设计的。强制您的应用纵向显示可能使其在此类设备上几乎无法使用。Android 最近也在迁移到其他类型的设备。最好让设备选择首选方向。
可能是..您必须以编程方式识别它是平板电脑还是手机...首先检查设备是手机还是平板电脑
然后......
if(isTablet)
{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}else
{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
<activity android:name=".yourActivity"
android:screenOrientation="portrait" ... />
添加到主要活动并添加
android:configChanges="keyboardHidden"
以防止您的程序在调用键盘时更改模式。
在活动标签下的清单文件中将屏幕方向设置为纵向。
这里的例子
您需要输入每个活动
在活动中添加以下行
肖像用
android:screenOrientation="portrait"
tools:ignore="LockedOrientationActivity"
景观
android:screenOrientation="landscape"
tools:ignore="LockedOrientationActivity"
这里是 MainActivity 的例子
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="org.thcb.app">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity"
android:screenOrientation="portrait"
tools:ignore="LockedOrientationActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MainActivity2"
android:screenOrientation="landscape"
tools:ignore="LockedOrientationActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
在活动标签下的清单文件中将屏幕方向设置为纵向。
android:screenOrientation="locked"
用于 实际活动<application>
的所有应用程序 <activity>
只需添加:
android:screenOrientation="portrait"
在“ AndroidManifest.xml ”中:
<activity
android:screenOrientation="portrait"
android:name=".MainActivity"
android:label="@string/app_name">
</activity>