在android api 16(4.1jelly bean)和更高版本上,我们有getCurrentSizeRange方法来获得宽度和高度的范围。如何获取4.1之前版本的大小范围?
我试图查看源代码,看看如何计算范围。它在不同的android版本上做得不同,我找不到计算这些大小的逻辑。任何能帮助我找到这一点的建议都是非常感谢的。

最佳答案

如果你只是想确定纵向和横向的高度和宽度,你可以快速地强制两种方向,并得到每种方向的度量。下面的代码片段就是这样做的。代码由一个简单的首选项检查来保护,因为我在onCreate()中对此进行了测试,方向更改将导致活动重新启动(并进入循环)。在你的应用程序中,你可能会想做一些更具体的事情。此外,使用的所有方法在API 1之前都是有效的,但在更高版本中可能已被替换或重命名。

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
if (prefs.getBoolean("firstTime", true)) {
    prefs.edit().putBoolean("firstTime", false).commit();

    DisplayMetrics dm = new DisplayMetrics();

    setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    getWindowManager().getDefaultDisplay().getMetrics(dm);
    Log.e(TAG, String.format("landscape is %d x %d",  dm.widthPixels, dm.heightPixels));
    // Do something with the values, perhaps saving them in prefs

    setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    getWindowManager().getDefaultDisplay().getMetrics(dm);
    Log.e(TAG, String.format("portrait is %d x %d",  dm.widthPixels, dm.heightPixels));
    // Do something with the values, perhaps saving them in prefs
}

08-27 14:59