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"

希望对您有所帮助。