android - 将dp转换为float

时间:2012-11-28 08:29:02

标签: android font-size

我的字体大小是12dp。

我正在使用TextPaint设置字体,因为我正在使用跨度。问题是TextPaint接受的参数是浮点数。我想知道如何将12 dp转换为浮点数?

3 个答案:

答案 0 :(得分:11)

来自android.content.res.Resources.getDimension(int id):

float twelveDp = TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, 12, 
                mContext.getResources().getDisplayMetrics() );

答案 1 :(得分:6)

试试这个:

public static float dipToPixels(Context context, float dipValue){
    DisplayMetrics metrics = context.getResources().getDisplayMetrics();
    return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,  dipValue, metrics);
}

答案 2 :(得分:2)

您可以尝试以下操作:

//将sp转换为像素

final float scale = getResources().getDisplayMetrics().scaledDensity;
int mTextSizeP = (int)  getResources().getDimensionPixelSize(R.dimen.text_size) / scale );

我已经在res/values/dimens.xml中定义了text_size:

<resources>
    <dimen name="text_size">12sp</dimen>
</resources>