在Android 11中,可能会遇到“TypedValue.applyDimension()”方法返回奇怪值的问题。这是由于Android 11引入了一些更改,导致该方法的行为发生了变化。
解决此问题的方法是使用新的API “DisplayMetrics#densityDpi” 来替代 “TypedValue.applyDimension()” 方法。以下是一个示例代码,演示如何解决此问题:
// 获取当前显示度量
DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
// 使用新的API来计算所需的像素大小
float pixelSize = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 10, displayMetrics);
// 使用新的API来计算所需的DP大小
float dpSize = 10 / (displayMetrics.densityDpi / 160f);
通过使用“DisplayMetrics#densityDpi”来替代“TypedValue.applyDimension()”,可以确保在Android 11及更高版本中获得正确的像素和DP值。
请记住,在使用新的API时,您需要确保您的应用程序已经适配了Android 11的变化,并且要注意兼容性问题。