Android 所有活动均横向
Android landscape orientation on ALL activities
我想要一个应用程序范围的规则来不允许横向。我意识到我可以通过输入:
android:screenOrientation="portrait"
在我的每一项活动中,但这似乎并不干净。我也可以放
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
在我的 activity 的每个 onCreate()
方法中。
但我想要一个不需要此代码重复的解决方案。有什么建议么?
解法:
您可以为整个应用程序执行此操作 ,而 不必使所有活动都扩展一个公共基础 class。
诀窍是首先确保包含一个 Application
subclass in your project. In its onCreate()
, called when your app first starts up, you register an ActivityLifecycleCallbacks
对象(API 级别 14+)以接收 activity 生命周期事件的通知。
这让您有机会在应用程序中的 any activity 启动(或停止、恢复或其他)时执行您自己的代码。此时可以在新创建的activity.
上调用setRequestedOrientation()
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);
}
....
});
}
}
有任何疑问,请留言。
注:在manifest的<application>
标签中添加:android:name=".MyApp"
希望对您有所帮助。
我想要一个应用程序范围的规则来不允许横向。我意识到我可以通过输入:
android:screenOrientation="portrait"
在我的每一项活动中,但这似乎并不干净。我也可以放
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
在我的 activity 的每个 onCreate()
方法中。
但我想要一个不需要此代码重复的解决方案。有什么建议么?
解法:
您可以为整个应用程序执行此操作 ,而 不必使所有活动都扩展一个公共基础 class。
诀窍是首先确保包含一个 Application
subclass in your project. In its onCreate()
, called when your app first starts up, you register an ActivityLifecycleCallbacks
对象(API 级别 14+)以接收 activity 生命周期事件的通知。
这让您有机会在应用程序中的 any activity 启动(或停止、恢复或其他)时执行您自己的代码。此时可以在新创建的activity.
上调用setRequestedOrientation()
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);
}
....
});
}
}
有任何疑问,请留言。
注:在manifest的<application>
标签中添加:android:name=".MyApp"
希望对您有所帮助。