行业知识
Android 获取屏幕方向,根据屏幕旋转角度判断屏幕实际方向
2026-11-08 09:11:09
来源:互联网转载
在使用 getResources().getConfiguration().orientation 获取屏幕方向时,可能会遇到不准确的问题。
这是因为该方法返回的是设备的自然方向,而不是屏幕的实际方向。
在某些情况下,设备的自然方向可能与屏幕的实际方向不同。例如,如果设备是横向放置的,但屏幕是纵向显示的,那么设备的自然方向将是横向,但屏幕的实际方向将是纵向。
要获取屏幕的实际方向,可以使用 getWindowManager().getDefaultDisplay().getRotation() 方法。该方法返回当前屏幕的旋转角度,可以通过判断旋转角度来确定屏幕的实际方向。
这个方法不准确(Configuration):
public static boolean isLandscrape() { // 判断Android当前的屏幕是横屏还是竖屏。横竖屏判断 if (BaseApplication.getApplication().getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { //竖屏 return false; } else { //横屏 return true; } } 推荐使用下面的方法:
public static boolean isLandscrape() { WindowManager windowManager = (WindowManager) BaseApplication.getApplication().getSystemService(WINDOW_SERVICE); int rotation = windowManager.getDefaultDisplay().getRotation(); int orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT; boolean isLandscape;// 是横屏 if (rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_180) { // 设备的自然方向是纵向 if (rotation == Surface.ROTATION_0) { // 屏幕的实际方向也是纵向 orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT; isLandscape = false; } else { // 屏幕的实际方向是横向 orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE; isLandscape = true; } } else { // 设备的自然方向是横向 if (rotation == Surface.ROTATION_90 || rotation == Surface.ROTATION_270) { // 屏幕的实际方向也是横向 orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE; isLandscape = true; } else { // 屏幕的实际方向是纵向 orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT; isLandscape = false; } }// setRequestedOrientation(orientation);// 设置屏幕方向 return isLandscape; }
上一篇:计算机网络——多媒体网络
下一篇:香港服务器怎么查地址?