问题描述
在横向方向上,我需要知道导航栏是在屏幕的右侧还是左侧,以便可以使用WindowInsets将填充应用于LinearLayout,以防止LinearLayout与导航栏重叠。
解决方法
我最后使用OrientationEventListener
,它以degrees
的形式返回设备的方向,orientation
中的值取决于设备的倾斜方式,范围为0-360您可能想实时Toast
的值,以了解哪个度数是反向风景,哪个度数是风景,这很棘手,但是可以完成工作。纵向为0到50,横向为范围为55-120,在反向环境中,该值> 250,但如果方向迅速改变,则可以低至200。方向-1表示该设备平放在表面上。在反向环境中,navigation bar
在风景中是在右边,在风景中是在左边。
orientationListener = new OrientationEventListener(this,SensorManager.SENSOR_DELAY_NORMAL) {
@Override
public void onOrientationChanged(int orientation) {
if(orientation>250){//reverse landscape
isReverse=true;
}
else {
isReverse=false;
}
}
};
if (orientationListener.canDetectOrientation()) {
orientationListener.enable();
} else {
orientationListener.disable();
}