У меня есть **LazyColumn ** с большим количеством контента (элементы могут иметь разных типов и размеров). Недавно мне дали задачу отследить, находится ли видео (часть компонента **Post**) в центре экрана и в зависимости от этого воспроизвести его или остановить.
Поскольку для видео используются AndroidView и android.media3.ui.PlayerView, я решил использовать ViewTreeObserver.OnGlobalLayoutListener, и он вроде производительность не упала и прокрутка достаточно плавная.
А можно ли в Compose сделать так, чтобы производительность не падала?
На данный момент у меня есть такая реализация:
Код: Выделить всё
AndroidView(
modifier = modifier.
onGloballyPositioned { coordinates ->
val position = coordinates.positionInWindow()
val start = position.y.roundToInt()
val end = coordinates.size.height + start
if (screenCenter in start..end) {
exoPlayer.play()
} else {
exoPlayer.pause()
}
},
factory = { viewContext ->
PlayerView(viewContext).apply {
player = exoPlayer
resizeMode = AspectRatioFrameLayout.RESIZE_MODE_FIXED_WIDTH}
}
)
Подробнее здесь: https://stackoverflow.com/questions/793 ... -of-screen