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
相关产品推荐
相关产品推荐

