В чем разница между px, dp и sp

«В чем разница между px, dp и sp» — вопрос из категории UI и Views, который задают на 24% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

px (пиксели) — абсолютные единицы, зависят от плотности экрана. Не рекомендуются, т.к. выглядят по-разному на устройствах с разным DPI.

dp (density-independent pixels) — относительные единицы, масштабируются в зависимости от плотности экрана (1dp ≈ 1px на экране 160dpi). Используются для размеров View (ширина, высота, отступы).

sp (scale-independent pixels) — аналогичны dp, но учитывают настройки шрифта пользователя. Используются для текста (TextView, размеры шрифтов).

Пример:

<TextView
    android:layout_width="100dp"  // ширина в dp
    android:layout_height="wrap_content"
    android:textSize="16sp"       // размер шрифта в sp
    android:text="Hello World"/>