💀
Второй курс РПО
Android
Android
  • Глава 1. Начало работы с Android
    • Начало работы с Android
    • Первый проект в Android Studio
    • Создание графического интерфейса
  • Глава 2. Основы создания интерфейса
    • Основы создания интерфейса
    • Определение интерфейса в файле XML. Файлы layout
    • Определение размеров
    • Ширина и высота элементов
    • Внутренние и внешние отступы
    • ConstraintLayout
    • Размеры элементов в ConstraintLayout
    • Цепочки элементов в ConstraintLayout
    • Программное создание ConstraintLayout и позиционирование
Powered by GitBook
On this page
  1. Глава 2. Основы создания интерфейса

Определение размеров

16.01.2025

PreviousОпределение интерфейса в файле XML. Файлы layoutNextШирина и высота элементов

Last updated 4 months ago

При разработке приложений под Android используются различные типы измерений:

  • px: пиксели текущего экрана. Не рекомендуется, так как реальное представление может изменяться в зависимости от устройства; каждое устройство имеет разное количество пикселей на дюйм.

  • dp: (density-independent pixels) независимые от плотности экрана пиксели. Основаны на физической плотности экрана с разрешением 160 dpi. Формула: px = dp * (dpi / 160).

  • sp: (scale-independent pixels) независимые от масштабирования пиксели. Рекомендуются для работы со шрифтами.

  • pt: 1/72 дюйма, базируются на физических размерах экрана.

  • mm: миллиметры.

  • in: дюймы.

Предпочтительные единицы измерения

Наиболее предпочтительной единицей измерения является dp, так как она обеспечивает консистентный вид интерфейса на устройствах с разной плотностью пикселей.

Примеры:

  1. Физические пиксели: На устройствах с разными характеристиками (например, Nexus 4, Nexus 5X, Nexus 6P) квадрат размером 300px будет занимать разное пространство.

  2. Независимые от плотности пиксели: Квадрат размером 300dp будет выглядеть одинаково на устройствах с разными экранами.


Категории плотностей:

  • ldpi (low): ~120dpi

  • mdpi (medium): ~160dpi

  • hdpi (high): ~240dpi

  • xhdpi (extra-high): ~320dpi

  • xxhdpi (extra-extra-high): ~480dpi

  • xxxhdpi (extra-extra-extra-high): ~640dpi


Установка размеров в Java

Иногда методы принимают значения в физических пикселях, а не в dp. Для перевода значений можно использовать метод TypedValue.applyDimension().

public static float applyDimension(
    int unit,
    float value,
    android.util.DisplayMetrics metrics
)

Параметры метода:

  1. unit — тип единиц:

    • COMPLEX_UNIT_DIP: dp.

    • COMPLEX_UNIT_IN: дюймы.

    • COMPLEX_UNIT_MM: миллиметры.

    • COMPLEX_UNIT_PT: точки.

    • COMPLEX_UNIT_PX: физические пиксели.

    • COMPLEX_UNIT_SP: sp.

  2. value — значение для преобразования.

  3. metrics — информация о метрике устройства.


Пример кода:

int valueInDp = 60;
int valueInPx = (int) TypedValue.applyDimension(
    TypedValue.COMPLEX_UNIT_DIP, 
    valueInDp, 
    getResources().getDisplayMetrics()
);

Вызов getResources().getDisplayMetrics() позволяет получить данные о метрике устройства, что обеспечивает правильное преобразование.