2

问题与 android 模拟器屏幕的旋转有关。

DefaultDisplay.getRotation()用来获取模拟器上的旋转角度。它只返回 0 和 90。即使在反向纵向和反向横向。没有在活动 XML 文件中设置任何特定的屏幕方向。我是这方面的初学者,所以可能在这里遗漏了一些东西,并且可以使用一些帮助来理解可能是什么。

谢谢。

4

3 回答 3

1

尝试这个..

int rotation = getWindowManager().getDefaultDisplay().getRotation();
        Log.v("rotation--", ""+rotation);

        switch (rotation) {

        case 0:
            Toast.makeText(getBaseContext(), "Angle 0", Toast.LENGTH_SHORT).show();
            break;
        case 1:
            Toast.makeText(getBaseContext(), "Angle 90", Toast.LENGTH_SHORT).show();
            break;
        case 2:
            Toast.makeText(getBaseContext(), "Angle 180", Toast.LENGTH_SHORT).show();
            break;
        case 3:
            Toast.makeText(getBaseContext(), "Angle 270", Toast.LENGTH_SHORT).show();
            break;
        }
于 2013-11-09T05:15:38.183 回答
0

如果您只想纵向/反转纵向和横向/反转横向,您可以使用

            if (Utils.getDeviceDefaultOrientation(localActivity) == Configuration.ORIENTATION_LANDSCAPE)
            {
                if (getWindowManager().getDefaultDisplay().getRotation() == Surface.ROTATION_0)
                    //Landscape Mode
                else if (getWindowManager().getDefaultDisplay().getRotation() == Surface.ROTATION_90)
                    //Portrait Mode
                else if (getWindowManager().getDefaultDisplay().getRotation() == Surface.ROTATION_180)
                    //Reverse Landscape
                else if (getWindowManager().getDefaultDisplay().getRotation() == Surface.ROTATION_270)
                    //Reverse Portrait
            }
            else
            {
                if (getWindowManager().getDefaultDisplay().getRotation() == Surface.ROTATION_0)
                    //Portrait Mode
                else if (getWindowManager().getDefaultDisplay().getRotation() == Surface.ROTATION_90)
                    //Landscape Mode
                else if (getWindowManager().getDefaultDisplay().getRotation() == Surface.ROTATION_180)
                    //Reverse Portrait Mode
                else if (getWindowManager().getDefaultDisplay().getRotation() == Surface.ROTATION_270)
                    //Reverse Landscape Mode
            }

我们必须检查,getDeviceDefaultOrientation因为对于平板电脑,默认设备方向是横向,在这种情况下它将返回getRotation()0

于 2013-11-09T05:16:25.277 回答
0

首先getRotation方法在模拟器屏幕中不起作用。因为根据你的线程你可以看到你只有两个角度,即“0”和“90”,因为风景肖像模式。因此,只需在任何真实设备中进行测试。

于 2013-11-09T04:47:30.057 回答