я обнаружил, что можно установить размеры моих интерфейсных элементов макетов XML с использованием спадов, как в следующем фрагменте:Каков правильный способ указать размеры в DIP из Java-кода?
android:layout_width="10dip"
Но интерфейс Java принимает целое число в качестве аргументов, и нет никакого способа, чтобы указать размеры в спадах , Каков правильный способ рассчитать это?
Я понял, что мне нужно использовать плотность собственности DisplayMetrics
класс, но это правильный путь?
Могу ли я полагаться на эту формулу, которая всегда правильная?
пикселей * DisplayMetrics.density = падение
Есть ли функция полезности для преобразования где-то в Android?
Спасибо, Роман, я как-то упустил эту часть. Есть два дополнительных вопроса, связанных с темой: - будет ли плотность всегда равной для обоих измерений? Кажется, это так (поскольку это только одно значение), но, возможно, есть и другая формула для вычисления этого. - нет ли API для преобразования для меня? Должен ли я писать следующий код в моем коде?В коде компоновки XML можно указать «dip» как единицу, почему это невозможно в Java API? –
Я думаю, вы можете смело предположить, что плотность равна в обоих измерениях. Помните, что DisplayMetrics.density является ** логической плотностью **, а не фактической плотностью экрана (которая может незначительно отличаться от логической плотности). Что касается API конверсии, то тривиально написать вспомогательный метод, например say 'Util.dip', который преобразует dip в пиксели для использования в вызовах функций. В любом случае, это чище обрабатывать единицы в Java. –