首页 > 解决方案 > 仅在横向模式下强制旋转屏幕

问题描述

在我的Activity我有按钮,如果我点击按钮将屏幕旋转到横向模式,但它只支持横向模式。如何开启人像模式?我正在使用以下代码进行强制旋转。

   rotate.setOnClickListener(new Button.OnClickListener(){

   @Override
   public void onClick(View v) {
        this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
   }

});

上面的代码覆盖了原生旋转功能,有人可以建议我如何启用原生旋转功能吗?

标签: javaandroid

解决方案


以编程方式您可以使用此代码执行此操作

potraitButton.setOnClickListener(new Button.OnClickListener(){

   @Override
   public void onClick(View v) {
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
   }

});

buttonLandscape.setOnClickListener(new Button.OnClickListener(){

   @Override
   public void onClick(View v) {
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
   }

});

如果要自动旋转屏幕:

SensorManager sensorManager = (SensorManager) this.getSystemService(Context.SENSOR_SERVICE);
        sensorManager.registerListener(new SensorEventListener() {
            int orientation=-1;;

            @Override
            public void onSensorChanged(SensorEvent event) {
                if (event.values[1]<6.5 && event.values[1]>-6.5) {
                    if (orientation!=1) {
                        Log.d("Sensor", "Landscape");
                    }
                    orientation=1;
                } else {
                    if (orientation!=0) {
                        Log.d("Sensor", "Portrait");
                    }
                    orientation=0;
                }
            }

            @Override
            public void onAccuracyChanged(Sensor sensor, int accuracy) {


            }
        }, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_GAME);

推荐阅读