You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android模拟器中如何用Java代码判断当前横竖屏状态?

判断Android应用当前横竖屏状态的几种方法

嗨,这个需求在Android开发里挺常见的,我给你分享几个实用的实现方式,亲测在模拟器和真机上都能正常工作:

方法一:通过Configuration类直接判断

这是最常用也最简便的方式,直接获取系统配置信息就能拿到当前屏幕方向:

// 在Activity中调用
Configuration config = getResources().getConfiguration();
if (config.orientation == Configuration.ORIENTATION_LANDSCAPE) {
    // 当前是横屏
    Log.d("ScreenOrientation", "当前为横屏状态");
} else if (config.orientation == Configuration.ORIENTATION_PORTRAIT) {
    // 当前是竖屏
    Log.d("ScreenOrientation", "当前为竖屏状态");
} else {
    // 极少数情况会出现未定义的方向
    Log.d("ScreenOrientation", "当前方向未定义");
}

方法二:通过WindowManager对比屏幕宽高

如果遇到Configuration状态更新不及时的场景,可以通过获取屏幕实际宽高来判断:

// 在Activity中调用
WindowManager windowManager = getWindowManager();
Display display = windowManager.getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int screenWidth = size.x;
int screenHeight = size.y;

if (screenWidth > screenHeight) {
    // 宽大于高,判定为横屏
    Log.d("ScreenOrientation", "当前为横屏状态");
} else {
    // 高大于等于宽,判定为竖屏
    Log.d("ScreenOrientation", "当前为竖屏状态");
}

额外补充:监听横竖屏切换变化

如果你需要在横竖屏切换时实时做出响应,可以重写Activity的onConfigurationChanged方法,但记得要在AndroidManifest.xml对应的Activity标签里添加配置:

<activity
    android:name=".YourActivity"
    android:configChanges="orientation|screenSize|smallestScreenSize">
</activity>

然后在Activity中实现:

@Override
public void onConfigurationChanged(@NonNull Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    // 横竖屏切换时会触发这个方法
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        Log.d("ScreenOrientation", "切换为横屏");
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
        Log.d("ScreenOrientation", "切换为竖屏");
    }
}

以上几种方法都能满足你的需求,根据实际场景选择就行~

内容的提问来源于stack exchange,提问作者HelloWorld1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:13:20