Конвертировать dip в px в Android

Я написал метод, чтобы получить пиксели от dip, но он не работает. Это дает мне ошибку времени выполнения.

На самом деле я запускал этот метод в отдельном классе и инициализировался в классе Activity

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

Этот код выполняется асинхронно. Пожалуйста, помогите мне.

 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;

    }

Ответ 1

Попробуйте следующее:

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

Ответ 2

Вы можете добавить значение dp в файл dimen.xml и использовать

int pixels = getResources().getDimensionPixelSize(R.dimen.idDimension);

Это проще...

Ответ 3

Формула: px = dp * (dpi/160), для экрана на 160 точек на дюйм. Подробнее см. http://developer.android.com/guide/practices/screens_support.html.

Вы можете попробовать:

public static int convertDipToPixels(float dips)
{
    return (int) (dips * appContext.getResources().getDisplayMetrics().density + 0.5f);
}

Надеюсь, что это поможет...