【问题标题】:how to know if device is left landscape or right landscape?如何知道设备是左横向还是右横向?
【发布时间】:2017-10-11 16:02:06
【问题描述】:

我的应用有一个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 没有帮助。

【问题讨论】:

  • 尝试使用 getResources().getConfiguration().orientation 代替 getWindowManager().getDefaultDisplay().getRotation()
  • @user1865027 找到解决方案了吗?

标签: android


【解决方案1】:

根据文档here

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-19
    • 2011-07-02
    相关资源
    最近更新 更多