요약
NavDisplay에 predictivePopTransitionSpec가 설정되어 있고, 일부 화면에서는 뒤로 가기 제스처 진행 중 현재 화면 뒤로 이전 화면이 정상적으로 드러납니
다.
하지만 MediaPreview 화면에서는 제스처가 완료될 때까지 이전 화면이 보이지 않고, pop이 끝난 뒤에야 이전 화면이 나타납니다.
기대 동작
MediaPreview 화면에서 시스템 predictive back 제스처를 수행하면, 제스처 진행 중 predictivePopTransitionSpec에 따라 이전 화면이 뒤에서 점진적으로 보
여야 합니다.
실제 동작
MediaPreview에서는 제스처 진행 중에도 현재 화면만 유지되고, 제스처가 완료되어 pop이 끝난 뒤에야 이전 화면이 나타납니다.
원인 추정
MediaPreview가 자체적으로 BackHandler를 등록하고 있어, back 이벤트를 NavDisplay보다 먼저 소비하는 것으로 보입니다.
관련 코드:
app/src/main/java/com/chac/AppNavigation.kt
NavDisplay(..., predictivePopTransitionSpec = { ... })
feature/album/src/main/java/com/chac/feature/album/gallery/component/MediaPreviewScreen.kt
BackHandler(onBack = onDismiss)
이 때문에 NavDisplay의 predictivePopTransitionSpec가 제스처 진행 중 적용되지 못하는 것으로 추정됩니다.
참고
GalleryScreen은 특정 상태에서만 BackHandler를 활성화하므로 일반 상태에서는 predictive back이 정상 동작할 수 있습니다.
MediaPreview는 항상 활성화된 BackHandler를 사용하고 있어 predictive back 애니메이션을 막을 가능성이 높습니다.
- 갤러리에서 사진을 길게 눌러 진입한
MediaPreview 화면에서 재현됩니다.
대응 방향
MediaPreview의 로컬 BackHandler를 제거하고 NavDisplay의 onBack에 뒤로 가기 처리를 맡기기
요약
NavDisplay에predictivePopTransitionSpec가 설정되어 있고, 일부 화면에서는 뒤로 가기 제스처 진행 중 현재 화면 뒤로 이전 화면이 정상적으로 드러납니다.
하지만
MediaPreview화면에서는 제스처가 완료될 때까지 이전 화면이 보이지 않고, pop이 끝난 뒤에야 이전 화면이 나타납니다.기대 동작
MediaPreview화면에서 시스템 predictive back 제스처를 수행하면, 제스처 진행 중predictivePopTransitionSpec에 따라 이전 화면이 뒤에서 점진적으로 보여야 합니다.
실제 동작
MediaPreview에서는 제스처 진행 중에도 현재 화면만 유지되고, 제스처가 완료되어 pop이 끝난 뒤에야 이전 화면이 나타납니다.원인 추정
MediaPreview가 자체적으로BackHandler를 등록하고 있어, back 이벤트를NavDisplay보다 먼저 소비하는 것으로 보입니다.관련 코드:
app/src/main/java/com/chac/AppNavigation.ktNavDisplay(..., predictivePopTransitionSpec = { ... })feature/album/src/main/java/com/chac/feature/album/gallery/component/MediaPreviewScreen.ktBackHandler(onBack = onDismiss)이 때문에
NavDisplay의predictivePopTransitionSpec가 제스처 진행 중 적용되지 못하는 것으로 추정됩니다.참고
GalleryScreen은 특정 상태에서만BackHandler를 활성화하므로 일반 상태에서는 predictive back이 정상 동작할 수 있습니다.MediaPreview는 항상 활성화된BackHandler를 사용하고 있어 predictive back 애니메이션을 막을 가능성이 높습니다.MediaPreview화면에서 재현됩니다.대응 방향
MediaPreview의 로컬BackHandler를 제거하고NavDisplay의onBack에 뒤로 가기 처리를 맡기기