小工具知识网

当前位置: 首页 > 行业知识 > Android 获取屏幕方向,根据屏幕旋转角度判断屏幕实际方向

行业知识

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;    }

上一篇:计算机网络——多媒体网络

下一篇:香港服务器怎么查地址?