如何在Android上运行时锁定应用程序屏幕方向?
默认情况下,我的应用程序遵循屏幕方向,但我想添加一个设置以强制特定方向。 我已经能够在应用程序类中使用以下代码来实现这一点如何在Android上运行时锁定应用程序屏幕方向?,android,screen-orientation,Android,Screen Orientation,默认情况下,我的应用程序遵循屏幕方向,但我想添加一个设置以强制特定方向。 我已经能够在应用程序类中使用以下代码来实现这一点 public void applyOrientationMode() { final OrientationEnum orientation = PreferencesHelper.getOrientationMode(); if (this.orientationLifecycleCallback != null) { try {
public void applyOrientationMode() {
final OrientationEnum orientation = PreferencesHelper.getOrientationMode();
if (this.orientationLifecycleCallback != null) {
try {
unregisterActivityLifecycleCallbacks(this.orientationLifecycleCallback);
} catch (final Throwable t) {
ExceptionHelper.fullLogging(t, TAG);
}
}
if (orientation != null && orientation != OrientationEnum.UNLOCKED) {
this.orientationLifecycleCallback = new Application.ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(Activity activity, Bundle bundle) {
switch (orientation) {
case PORTRAIT:
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
break;
case LANDSCAPE:
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
break;
}
}
@Override
public void onActivityStarted(Activity activity) {
}
@Override
public void onActivityResumed(Activity activity) {
}
@Override
public void onActivityPaused(Activity activity) {
}
@Override
public void onActivityStopped(Activity activity) {
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle bundle) {
}
@Override
public void onActivityDestroyed(Activity activity) {
}
};
registerActivityLifecycleCallbacks(this.orientationLifecycleCallback);
}
}
这段代码是从application.onCreate()调用的
它可以正常工作,但是如果我将设置设置为纵向模式并在横向模式下打开一个新活动,我可以看到在横向模式下创建的屏幕,然后再在纵向模式下重新创建。
我怎样才能防止这种情况
请不要使用任何清单定向解决方案,因为这不是我试图做的
谢谢我想你可以从这个开源项目中得到一些想法:为什么不在谷歌上搜索呢@emandt你至少读过我的问题吗???这根本不能解决问题。当第一个活动锁定了方向以纵向显示时,使用相同的方向创建新活动是正常的……当显示时,由于停止而释放锁定的方向时,新活动会检测到屏幕方向的更改,并根据此更改自行更新。为了避免这种情况,您必须手动强制第二个活动以横向方式打开,而不是以当前方向打开。@emandt我现在知道了,我在问如何做到这一点