如何检测android设备的方向?

Mar*_*ark 47 android orientation

是否可以简单地检测Android设备的当前方向,而无需编程监听器和处理位置矩阵?在我的应用程序中,我只想知道目前的方向 - 垂直或水平 - 此刻.但是,我不想听取轴测量或其他事件的事件.

小智 67

您还可以使用:

getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE
Run Code Online (Sandbox Code Playgroud)


Cri*_*ian 65

使用getRotation方法:

Display display = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
int rotation = display.getRotation();
Run Code Online (Sandbox Code Playgroud)

从文档:

返回屏幕从"自然"方向的旋转.返回的值可以是Surface.ROTATION_0(不旋转), ,Surface.ROTATION_90,Surface.ROTATION_180Surface.ROTATION_270.例如,如果设备具有自然高的屏幕,并且用户将其侧面转向横向,则此处返回的值可以是Surface.ROTATION_90或者Surface.ROTATION_270取决于其转动的方向.角度是屏幕上绘制图形的旋转,这是设备物理旋转的相反方向.例如,如果设备逆时针旋转90度,则补偿渲染将顺时针旋转90度,因此此处的返回值将为Surface.ROTATION_90.

请记住,这getRotation是从Android 2.2引入的.getOrientation如果您的目标是旧设备,请使用.

  • 如果用户关闭旋转,这样做了吗?例如,我已关闭旋转,因此我的桌面方向始终是纵向,但相机应用程序,旋转此配置的预览独立. (5认同)