为了账号安全,请及时绑定邮箱和手机立即绑定

如何仅将整个应用程序设置为纵向模式?

如何仅将整个应用程序设置为纵向模式?

噜噜哒 2019-10-24 13:56:52
如何设置它,使应用程序仅在纵向模式下运行?我希望在应用程序运行时禁用横向模式。如何以编程方式进行?
查看完整描述

3 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

对于任何Android版本

从XML

您可以android:screenOrientation="portrait"在manifest.xml文件中为每个活动指定。您不能在application标签上指定此选项。


从Java

另一种选择是以编程方式执行此操作,例如在Activity基类中:


@Override

public void onCreate(Bundle savedInstanceState) {

  setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

}

对于Android 4+(API 14+)

最后一个选择是使用活动生命周期侦听器执行此操作,此活动侦听器仅从Android 4.0(API 14+)起可用。一切都发生在自定义Application类中:


@Override

public void onCreate() {

    super.onCreate();  

    registerActivityLifecycleCallbacks(new ActivityLifecycleAdapter() {

        @Override

        public void onActivityCreated(Activity a, Bundle savedInstanceState) {

            a.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

        }

    });

}

ActivityLifecycleAdapter只是您需要创建的一个帮助程序类,它将是一个空的实现ActivityLifecycleCallbacks(因此,当您只需要其中一个方法时,就不必重写该接口的每个方法)。


查看完整回答
反对 回复 2019-10-24
?
喵喵时光机

TA贡献1846条经验 获得超7个赞

是的,您可以通过编程方式以及所有活动来执行此操作,以使AbstractActivity扩展所有活动。


public abstract class AbstractActivity extends Activity {

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

    }

}

此抽象活动也可以用于全局菜单。


查看完整回答
反对 回复 2019-10-24
?
九州编程

TA贡献1785条经验 获得超4个赞

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


首先,要确保您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);


            }


            ....


        });


    }

}


查看完整回答
反对 回复 2019-10-24
  • 3 回答
  • 0 关注
  • 474 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信