所有活动的Android横向定位

时间:2018-09-29 19:50:17

标签: android android-activity android-orientation

我希望有一个适用于整个应用程序的规则,不允许横向放置。我意识到我可以通过以下方式获得此信息:

android:screenOrientation="portrait"

在我的每一项活动中,但这似乎都不干净。我也可以放 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

我的活动的每个onCreate()方法中的

但是我想要一个不需要此代码重复的解决方案。有什么建议么?

1 个答案:

答案 0 :(得分:2)

解决方案:

您可以为整个应用程序执行此操作,无需,而不必使所有活动都扩展一个公共基类。

首先要确保技巧是在项目中包含Application子类。在其onCreate()(在您的应用程序首次启动时调用)中,您注册了ActivityLifecycleCallbacks对象(API级别14+)以接收活动生命周期事件的通知。

这使您有机会在应用程序中的任何任何活动开始(或停止或继续执行)时执行自己的代码。此时,您可以致电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);

            }

            ....

        });

    }
}

如有疑问,请发表评论。

注意:添加清单的<application>标签:android:name=".MyApp"

希望有帮助。

enter image description here