在真实设备上顺时针旋转活动的问题

时间:2018-12-16 13:33:48

标签: java android android-emulator screen-orientation

我有一个活动,上面有一个按钮,我想在每次用户单击按钮后顺时针旋转90度,我编写了一些代码并在模拟器上工作,但是当我在真实设备上对其进行测试时,它没有工作完美 当我的代码进入情况1时,它返回到PORTRAIT模式,而不是将旋转更改为REVERSE_PORTRAIT

这是MyCode:

btnchangeRotation.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            int rotation = getWindowManager().getDefaultDisplay().getRotation();
            Log.v("rotation--", ""+rotation);

            switch (rotation) {

                case 0:
                    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
                    break;
                case 1:
                    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
                    break;
                case 2:
                    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
                    break;
                case 3:
                    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
                    break;
            }
        }
    });

我还像这样向清单中添加了渗透:

<uses-permission
        android:name="android.permission.WRITE_SETTINGS"
        tools:ignore="ProtectedPermissions" />

请注意,它完全可以在模拟器上正常工作。 任何建议都会有所帮助。 感谢任何建议。

注意: 当我在真实设备上打开屏幕旋转功能时,效果很好, 但是当我关闭它时,它只是设置为“纵向和横向”, 我想用没有陀螺仪传感器的设备来做。

1 个答案:

答案 0 :(得分:0)

 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

也许你是说:

MyActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

您拥有的版本只是调用一个方法,而对Activity本身没有任何处理。