如何知道设备是左侧还是右侧景观?

时间:2017-10-11 16:02:07

标签: android

我的应用有一个floating search view,可以占据整个屏幕宽度。当方向是横向时,它将在导航栏后面,所以我想为它添加一些边距。问题是,当我旋转左侧风景(右侧的导航栏)时,我的浮动视图的右侧部分位于导航栏的后面,当我旋转右侧风景时,左侧部分被覆盖,所以我需要一个正确的方法来知道哪一方增加更多的利润。

我目前有

switch (getWindowManager().getDefaultDisplay().getRotation()) {
    case Surface.ROTATION_0:
        break;
    case Surface.ROTATION_90:
        break;
    case Surface.ROTATION_180:
        break;
    case Surface.ROTATION_270:
        break;
}

我测试了Surface.ROTATION_90当设备左旋时(右侧导航栏),但我不知道所有设备是否都是这种情况。我似乎找不到任何定义Surface.ROTATION_90Surface.ROTATION_270之间差异的文档。如果有更好的方法让系统自动调整floating search bar甚至更好。将android:fitsSystemWindows设置为true无济于事。

1 个答案:

答案 0 :(得分:1)

根据文档here

这应该在所有设备中都相同,即“如果设备逆时针旋转90度,补偿渲染将顺时针旋转90度,因此这里返回的值将是Surface。 ROTATION_90“。

当然,ROTATION_270是相反的方向(右)。但是,ROTATION_90 / 270并不一定意味着横向模式,所以如果你还想知道你也应该检查当前的方向。