android - convert dp to float

20,955

Solution 1

From android.content.res.Resources.getDimension(int id):

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

Solution 2

Try this:

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

Solution 3

You can try following:

// Convert the sp to pixels

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

I have already have text_size defined in res/values/dimens.xml :

<resources>
    <dimen name="text_size">12sp</dimen>
</resources>
Share:
20,955
lorrainebatol
Author by

lorrainebatol

Just some programmer.

Updated on July 09, 2022

Comments

  • lorrainebatol
    lorrainebatol almost 2 years

    My font size is 12dp.

    I'm setting the font using TextPaint, since I'm using a span. The problem is the parameter that TextPaint accepts is in float. I'm wondering how can I convert 12 dp to float?

  • Cipo
    Cipo about 2 years
    applyDimension (int unit, FLOAT value...) not DP. This solution convert float to float, not DP to float.