在Android 4.1之前,getCurrentSizeRange()的含义是什么?

3
在Android API 16(4.1 Jelly Bean)及更高版本中,我们有方法getCurrentSizeRange来获取宽度和高度的范围。那么在早于4.1版本的版本中如何获取大小范围呢?
我尝试查看源代码以了解范围是如何计算的。在不同的Android版本上,计算方式不同,我找不到计算这些大小的逻辑。非常感谢任何可以帮助我找到这个问题的指针。
1个回答

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
}

Scott:在4.1中,高度和宽度与currentSizeRange不同。查看getCurrentSizeRange的文档,你就会有一个想法。 - 500865
是的,没错。根据您要对这些值执行什么操作,您仍需要分析从getMetrics()返回的值,并确定最小和最大宽度以及高度。诚然,并不是一个理想的解决方案,但支持旧的API版本从来都不是没有麻烦。 - scottt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接