在Android API 16(4.1 Jelly Bean)上,稍后我们使用方法getCurrentSizeRange来获取宽度和高度的范围。如何获得4.1之前版本的尺寸范围?
我试着查看源代码,看看如何计算范围。它在不同的Android版本上有所不同,我无法找到计算这些尺寸的逻辑。任何可以帮助我找到这一点的指针都非常感激。
答案 0 :(得分:1)
如果您只是想确定纵向和横向的高度和宽度,您可以快速强制双向定位并获得每个方向的指标。以下代码片段就是这样做的。代码由一个简单的首选项检查保护,因为我在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
}