TGViewer
AppFiles - Mobile Development AppFiles - Mobile Development @applib · 2.17K subscribers
Post #3772 426
Плавная анимация в Jetpack Compose — простое решение с animateDpAsState

Благодаря Jetpack Compose логика анимации легко встраивается в декларацию пользовательского интерфейса.

Всего несколько строк кода — и вы можете создавать плавные, адаптивные переходы, которые придадут вашему приложению премиальный и продуманный вид.

Экспериментируем с animateDpAsState — одним из удобных API Compose, который делает переходы пользовательского интерфейса невероятно плавными.

Цель была проста: анимировать вертикальное смещение кнопки в зависимости от положения нижнего экрана.

Сниппет:

val targetY by animateDpAsState(
targetValue = when (sheetState.currentValue) {
SheetValue.Hidden -> 0.dp
else -> {
val currentOffset = with(density) {
try { sheetState.requireOffset().toDp() }
catch (_: Exception) { 0.dp }
}

(usableHeight - currentOffset)
.coerceAtLeast(0.dp)
.coerceAtMost(maxLift)
}
},
label = "gps_button_animation"
)

Box(
modifier = Modifier
.offset(y = -targetY) // Negative offset moves the button up
) {
// Button content here
}


Платформа: Android
More from @applib
  1. Oct 16, 2026Как фронтенд‑команде сделать мобильное приложение без нативных разработчиков Нашей команде…
  2. Oct 16, 2026📺 Видео и подкасты за неделю • (iOS Ru) Анатомия LazyVStack. Проблемы, скрытые возможност…
  3. Oct 16, 2026Измеряя незримое: что и как измерять в мобильной разработке (часть 2) В прошлой статье мы…
  4. Oct 16, 2026Dari — инспектор взаимодействия WebView bridge для Android Dari — это библиотека-инспектор…
  5. Oct 15, 2026AsoBeast - self-hosted ASO-инструмент для отслеживания ключевых слов в App Store и Google…
  6. Oct 14, 2026Куда девается место на диске: Xcode, рабочие деревья и ИИ-агенты Несколько недель назад мо…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →