Я столкнулся с проблемой, из-за которой PlayerView из ExoPlayer просачивается или переходит на предыдущий экран после возврата назад. Это происходит, когда я нажимаю кнопку «Назад» или вызываю navController.popBackStack() на экране создания сообщения.
Вот код для составного экрана:
@OptIn(ExperimentalMaterialApi::class)
@Stateless
@Composable
fun HelpVideo(@RawRes videoResource: Int,onNavIconClicked: () -> Unit,@StringRes guideTitle: Int)
{
ApplyStatusNavBarColor()
MaintenanceAppScaffold(topAppBar = {
CommonAppBar(
text = R.string.soundassist_update_interrupted_video,
isInfoButton = false,
isBackButton = false
)
})
{
val context = LocalContext.current
val exoPlayer = remember {
ExoPlayer.Builder(context).build().apply {
val videoUri = RawResourceDataSource.buildRawResourceUri(videoResource)
val mediaItem = MediaItem.fromUri(videoUri)
addMediaItem(mediaItem)
prepare()
playWhenReady = true
}
}
LaunchedEffect(exoPlayer) {
exoPlayer.awaitVideoFinish()
onNavIconClicked()
}
AndroidView(
modifier =
Modifier.fillMaxSize(),
factory = {
StyledPlayerView(context).apply {
player = exoPlayer
layoutParams =
FrameLayout.LayoutParams(
ViewGroup.LayoutParams
.MATCH_PARENT,
ViewGroup.LayoutParams
.MATCH_PARENT
)
useController = false
}
}
)
DisposableEffect(exoPlayer) {
onDispose {
exoPlayer.release()
}
}
}}
< /code>
Проблема: < /strong> < /p>
При навигации назад: < /p>
Playerview виден на предыдущем экране в течение нескольких секунд
до исчезновения. Это происходит независимо от того, нажимаю ли я кнопку
назад или использую NavController.popbackStack (). < /Li>
< /ul>
Что я пробовал: < /strong> < /p>
Использование NavController.popbackStack () - Проблема сохраняется. < /li>
Единственный обходной путь, который я нашел Вызов NavController.navigate (GotoPrevious Screen). Хотя это решает визуальную проблему
, вводит другие связанные с навигацией осложнения
и не является идеальным решением. < /Li>
< /ul>
Почему это Playerview ведут себя как это при навигации? :
Я использую JetPack Compose с Exoplayer для воспроизведения видео.
Проблема, похоже, связана с жизненным циклом или утилизацией PlayerView в AndroidView.
изображение, показывающее проблему < /p>
Подробнее здесь: https://stackoverflow.com/questions/793 ... k-or-using
Exoplayer playerview UI утечки на предыдущий экран при нажатии назад или с использованием NavController.popbackStack () ⇐ Android
Форум для тех, кто программирует под Android
1737979245
Anonymous
Я столкнулся с проблемой, из-за которой PlayerView из ExoPlayer просачивается или переходит на предыдущий экран после возврата назад. Это происходит, когда я нажимаю кнопку «Назад» или вызываю navController.popBackStack() на экране создания сообщения.
Вот код для составного экрана:
@OptIn(ExperimentalMaterialApi::class)
@Stateless
@Composable
fun HelpVideo(@RawRes videoResource: Int,onNavIconClicked: () -> Unit,@StringRes guideTitle: Int)
{
ApplyStatusNavBarColor()
MaintenanceAppScaffold(topAppBar = {
CommonAppBar(
text = R.string.soundassist_update_interrupted_video,
isInfoButton = false,
isBackButton = false
)
})
{
val context = LocalContext.current
val exoPlayer = remember {
ExoPlayer.Builder(context).build().apply {
val videoUri = RawResourceDataSource.buildRawResourceUri(videoResource)
val mediaItem = MediaItem.fromUri(videoUri)
addMediaItem(mediaItem)
prepare()
playWhenReady = true
}
}
LaunchedEffect(exoPlayer) {
exoPlayer.awaitVideoFinish()
onNavIconClicked()
}
AndroidView(
modifier =
Modifier.fillMaxSize(),
factory = {
StyledPlayerView(context).apply {
player = exoPlayer
layoutParams =
FrameLayout.LayoutParams(
ViewGroup.LayoutParams
.MATCH_PARENT,
ViewGroup.LayoutParams
.MATCH_PARENT
)
useController = false
}
}
)
DisposableEffect(exoPlayer) {
onDispose {
exoPlayer.release()
}
}
}}
< /code>
[b] Проблема: < /strong> < /p>
При навигации назад: < /p>
Playerview виден на предыдущем экране в течение нескольких секунд
до исчезновения. Это происходит независимо от того, нажимаю ли я кнопку
назад или использую NavController.popbackStack (). < /Li>
< /ul>
Что я пробовал: < /strong> < /p>
Использование NavController.popbackStack () - Проблема сохраняется. < /li>
Единственный обходной путь, который я нашел Вызов NavController.navigate (GotoPrevious Screen). Хотя это решает визуальную проблему
, вводит другие связанные с навигацией осложнения
и не является идеальным решением. < /Li>
< /ul>
Почему это Playerview ведут себя как это при навигации? : [/b]
Я использую JetPack Compose с Exoplayer для воспроизведения видео.
Проблема, похоже, связана с жизненным циклом или утилизацией PlayerView в AndroidView.
изображение, показывающее проблему < /p>
Подробнее здесь: [url]https://stackoverflow.com/questions/79378855/exoplayer-playerview-ui-leaks-to-the-previous-screen-when-pressing-back-or-using[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия