Android 横竖屏判断

在Android开发中,我们经常会遇到需要根据屏幕的横竖状态来进行不同的UI布局或处理逻辑的情况。本文将介绍如何判断Android设备当前的屏幕横竖状态,并给出代码示例。

1. 获取屏幕方向

在Android中,我们可以通过getResources().getConfiguration().orientation来获取当前屏幕的方向,其返回值有两种:

  • Configuration.ORIENTATION_PORTRAIT:竖屏
  • Configuration.ORIENTATION_LANDSCAPE:横屏

下面是一个简单的示例代码:

// 获取屏幕方向
int orientation = getResources().getConfiguration().orientation;
if (orientation == Configuration.ORIENTATION_PORTRAIT) {
    // 竖屏
    Log.d("ScreenOrientation", "Portrait");
} else if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
    // 横屏
    Log.d("ScreenOrientation", "Landscape");
}

2. 判断屏幕横竖状态

除了直接获取屏幕方向外,我们还可以通过判断屏幕的宽高比来进一步确定设备的横竖状态。一般来说,横屏时屏幕的宽度会大于高度,竖屏时相反。

下面是一个示例代码:

// 获取屏幕宽度和高度
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int screenWidth = displayMetrics.widthPixels;
int screenHeight = displayMetrics.heightPixels;

if (screenWidth > screenHeight) {
    // 横屏
    Log.d("ScreenOrientation", "Landscape");
} else {
    // 竖屏
    Log.d("ScreenOrientation", "Portrait");
}

类图

classDiagram
    Configuration <|-- ScreenOrientationUtils
    ScreenOrientationUtils <-- MainActivity
    MainActivity --> ScreenOrientationUtils

关系图

erDiagram
    Configuration {
        int orientation
    }
    ScreenOrientationUtils {
        +getScreenOrientation()
    }
    MainActivity {
        +onCreate()
    }

通过以上方法,我们可以方便地判断Android设备当前的屏幕横竖状态,并根据不同情况进行相应的处理。在开发中,合理地利用屏幕方向信息可以提升用户体验,使应用更加灵活和适配各种屏幕。希望本文对你有所帮助!