Изучение определения размера экрана в Jetpack Compose: подробное руководство

Jetpack Compose, современный набор инструментов пользовательского интерфейса для создания собственных приложений Android, предлагает множество мощных функций. Одним из распространенных требований при разработке приложений является определение размера экрана. В этой статье мы рассмотрим различные методы получения размера экрана в Jetpack Compose и предоставим примеры кода для каждого подхода. Давайте погрузимся!

Метод 1: использование WindowMetrics

import androidx.compose.ui.platform.LocalConfiguration
import androidx.compose.ui.platform.LocalWindowMetrics
val configuration = LocalConfiguration.current
val windowMetrics = LocalWindowMetrics.current
val screenWidth = windowMetrics.bounds.width()
val screenHeight = windowMetrics.bounds.height()

Метод 2: использование пикселей, не зависящих от плотности (dp)

import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
val screenWidth: Dp = LocalConfiguration.current.screenWidthDp.dp
val screenHeight: Dp = LocalConfiguration.current.screenHeightDp.dp

Метод 3. Использование DisplayMetrics

import android.content.Context
import androidx.compose.runtime.Composable
import androidx.compose.ui.platform.LocalContext
import android.util.DisplayMetrics
@Composable
fun getScreenSize(): Pair<Int, Int> {
    val context = LocalContext.current
    val displayMetrics = DisplayMetrics()
    (context.getSystemService(Context.WINDOW_SERVICE) as WindowManager)
        .defaultDisplay
        .getMetrics(displayMetrics)
    return Pair(displayMetrics.widthPixels, displayMetrics.heightPixels)
}
// Usage:
val (screenWidth, screenHeight) = getScreenSize()

Метод 4. Использование ресурсов

import androidx.compose.runtime.Composable
import androidx.compose.ui.platform.LocalContext
@Composable
fun getScreenSize(): Pair<Int, Int> {
    val context = LocalContext.current
    val resources = context.resources
    val displayMetrics = resources.displayMetrics
    return Pair(displayMetrics.widthPixels, displayMetrics.heightPixels)
}
// Usage:
val (screenWidth, screenHeight) = getScreenSize()

В этой статье мы рассмотрели различные методы получения размера экрана в Jetpack Compose. Мы рассмотрели подходы с использованием WindowMetrics, пикселей, не зависящих от плотности (dp), DisplayMetricsи ресурсов. В зависимости от вашего конкретного случая использования вы можете выбрать метод, который лучше всего соответствует вашим потребностям. Включение определения размера экрана в ваше приложение может позволить вам создавать отзывчивые и адаптивные пользовательские интерфейсы. Приятного кодирования!