由于屏幕密度不同以及从 getTextSize() 获得的值以像素 (px) 为单位,您可能会看到不同的值。Density Independent Pixels(dp) 和 Scaled Pixels(sp) 被调整为独立于屏幕密度,它们是您应该使用的。要从 px 获取 dp 或 sp,您可以使用如下简单的转换:
public static float pxToDp( float px, Context context ) {
Resources resources = context.getResources();
DisplayMetrics metrics = resources.getDisplayMetrics();
float dp = px / ( metrics.densityDpi / 160f );
return dp;
}
或者这个(我从这篇文章中得到的):
public static float pixelsToSp(Context context, Float px) {
float scaledDensity = context.getResources().getDisplayMetrics().scaledDensity;
return px/scaledDensity;
}