Android – Convert DIP to PX

androiddensity-independent-pixel

I had written method to get the pixels from dip but it is not working. It give me runtime error.

Actually I was running this method in separate class and initialized in my Activity class

Board board = new Board(this);
board.execute(URL);

This code runs asynchronously. Please help me.

public float getpixels(int dp){
    //Resources r = boardContext.getResources();
    //float px = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dpis, r.getDisplayMetrics());
        
    final float scale = this.boardContext.getResources().getDisplayMetrics().density;
    int px = (int) (dp * scale + 0.5f);

    return px;
}

Best Answer

Try this:

Java

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

Kotlin

fun Context.dipToPixels(dipValue: Float) =
    TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dipValue, resources.displayMetrics)
Related Question