检测android中的镜像方向更改

时间:2013-02-03 17:48:21

标签: android screen-orientation

通常将设备旋转90度(纵向到横向或反向)会导致配置更改,活动被破坏并重新创建等,因此它可以在开始时保存Display.getRotation()的值并使用它。

但是,当直接从0到180(纵向到纵向)或90到270(横向到横向)旋转设备时,不会进行任何配置更改,设备只需重新映射屏幕。这是有道理的,因为布局的纵横比不会改变,也不需要改变。但这使得Activity无法检测何时发生这种变化,即Surface.ROTATION_90何时进入Surface.ROTATION_270等。

除了轮询Display.getRotation()之外,有没有更好的方法来检测这种变化?

1 个答案:

答案 0 :(得分:5)

您可以使用帮助程序类OrientationEventListener

这样的事情:

public void onOrientationChanged(int orientation) {
   if (orientation == ORIENTATION_UNKNOWN) return;

   int rotation = activity.getWindowManager().getDefaultDisplay()
         .getRotation();
   int degrees = 0;
   switch (rotation) {
     case Surface.ROTATION_0: ....
     case Surface.ROTATION_90: ....
     case Surface.ROTATION_180: .....
     case Surface.ROTATION_270: .....
   }

}