问题与android模拟器屏幕的旋转有关。
我正在使用DefaultDisplay.getRotation()
来获取模拟器上的旋转角度。它仅返回0和90。即使在反向纵向和反向横向。未在活动XML文件中设置任何特定的屏幕方向。我是这方面的初学者,所以我可能在这里遗漏了一些东西,并且可以使用一些帮助来理解它可能是什么。
感谢。
答案 0 :(得分: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;
}
答案 1 :(得分:0)
首先,getRotation
方法在模拟器屏幕中不起作用。因为根据你的主题你可以看到你只有两个角度,即“0”和“90”,因为风景和 potrait模式。所以只需在任何真实的设备上测试它。
答案 2 :(得分: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