Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
44 of 502 menu
◀ ▶

Класс LocalDensity

LocalDensity - это CompositionLocal, через который получают текущую плотность экрана. Свойство density показывает, сколько пикселей приходится на один dp. Методы toPx и roundToPx переводят значение Dp в пиксели для рисования на Canvas.

Синтаксис

val density = LocalDensity.current val px = with(density) { 16.dp.toPx() }

Пример

Давайте покажем ширину экрана в dp и в пикселях:

import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.Column import androidx.compose.material3.Text import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.unit.dp class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { val widthDp = LocalConfiguration.current.screenWidthDp.dp val widthPx = with(LocalDensity.current) { widthDp.toPx() } Column { Text(text = widthDp.toString()) Text(text = widthPx.toString()) } } } }

На экране первый текст покажет ширину в dp, второй - ту же ширину в пикселях.

Пример

Давайте округлим перевод dp в целые пиксели:

import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.material3.Text import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.unit.dp class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { val px = with(LocalDensity.current) { 10.dp.roundToPx() } Text(text = px.toString()) } } }

На экране текст покажет целое число пикселей, соответствующее 10 dp на этом устройстве.

Смотрите также

  • класс Dp,
    который хранит размеры независимо от плотности
  • функция BoxWithConstraints,
    которая отдаёт размеры родителя уже в dp
  • метод size,
    который задаёт размер элемента в dp без ручного перевода
  • метод offset,
    который сдвигает элемент на заданное расстояние в dp
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить