Android: как использовать dip (плотность независимого пикселя) в коде?
Как указать, что параметр int
находится в режиме dip? В частности, как написать эквивалент:
android:layout_width="50dip"
android:layout_height="50dip"
Что-то вроде...:
LayoutParams params = new LayoutParams(50, 50)
Ответы
Ответ 1
Используйте приведенную здесь формулу http://developer.android.com/guide/practices/screens_support.html#screen-independence для преобразования пикселя по умолчанию в независимый от плотности пиксель. ИЛИ проверить это Каков правильный способ указать размеры в DIP из кода Java?
Ответ 2
Существует встроенный метод, который также сделает это: TypedValue.applyDimension.
// Convert from 50dip to actual pixels
final int width = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 50, getResources().getDisplayMetrics());
final int height = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 50, getResources().getDisplayMetrics());
LayoutParams params = new LayoutParams(width, height);
Вы можете использовать это для преобразования из sp
единиц в пикселы.