如何在我的Android应用程序中禁用某些视图的横向模式?
如何在我的Android应用程序中禁用某些视图的横向模式?
android:screenOrientation="portrait"
。例如:<activity android:name=".SomeActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" />
由于这已经成为超级流行的答案,我感到非常内疚,因为强制竖屏很少是解决它经常应用的问题的正确方法。
强制竖屏的主要注意事项:
retainInstance
片段。因此,大多数应用程序应该让手机的传感器、软件和物理配置自己决定用户希望如何与您的应用程序交互。但是,如果您不满意您的使用情况下sensor
方向的默认行为,仍有一些情况需要考虑:
nosensor
。这将强制大多数平板电脑使用横向,大多数手机使用纵向,但我仍不建议对大多数“普通”应用程序采用此方法(某些用户喜欢在手机上键入横向软键盘,许多平板电脑用户在纵向阅读-您应该允许他们)。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
方法之前。
如果你想禁用你的Android应用程序(或单个活动)的Landscape模式
,你只需要在AndroidManifest.xml
文件中的活动标签中添加:
android:screenOrientation="portrait"
例如:
<activity
android:name="YourActivityName"
android:icon="@drawable/ic_launcher"
android:label="Your App Name"
android:screenOrientation="portrait">
另一种方法:编程实现。
如果您希望以编程方式即使用Java代码来完成此操作,可以通过将以下代码添加到不希望在横屏模式下显示的活动的Java类中来实现。
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
android:screenOrientation="nosensor">
。 - DSlomer64只需在你的清单文件中添加这一行:
android:screenOrientation="portrait"
喜欢:
<manifest
package="com.example.speedtest"
android:versionCode="1"
android:versionName="1.0" >
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="ComparisionActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" >
</activity>
</application>
</manifest>
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
您可以从设置菜单更改设置。
我需要这样做是因为我的计时器必须对应于屏幕上的内容,旋转屏幕将销毁当前活动。你可以在不需要所有活动扩展共同基类的情况下为整个应用程序执行此操作。
诀窍是首先确保在项目中包含一个Application子类。在其onCreate()方法中(在应用程序启动时调用),注册一个ActivityLifecycleCallbacks对象(API级别14+)以接收活动生命周期事件的通知。
这给了你机会在应用程序中的任何活动启动(或停止,或恢复等)时执行自己的代码。此时,你可以在新创建的活动上调用setRequestedOrientation()方法。
并且不要忘记在清单文件中添加app:name=".MyApp"。
class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
// register to be informed of activities starting up
registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(Activity activity,
Bundle savedInstanceState) {
// new activity created; force its orientation to portrait
activity.setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
....
});
}
}
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
android:screenOrientation="sensorPortrait"
。