Конвертировать 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);
}
Надеюсь, что это поможет...