代码之家  ›  专栏  ›  技术社区  ›  frillybob

所有活动的Android横向定位

  •  0
  • frillybob  · 技术社区  · 6 年前

    我想有一个appwide规则,不允许横向。我意识到我可以通过:

    android:screenOrientation="portrait"

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

    在我的每一项活动中 onCreate() 方法。

    但是我需要一个不需要这种代码复制的解决方案。有什么建议吗?

    1 回复  |  直到 6 年前
        1
  •  3
  •   Ümañg ßürmån    6 年前

    解决方案:

    您可以对整个应用程序执行此操作 必须使所有活动扩展一个公共基类。

    诀窍是首先确保你包括一个 Application 在项目中创建子类。在它的 onCreate() ,在应用程序首次启动时调用,您可以注册 ActivityLifecycleCallbacks

    这使您有机会随时执行自己的代码 任何 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