From 9e903a023ff3f6c32bcbc9ebbf69cd07a07c8dbc Mon Sep 17 00:00:00 2001 From: clark-signal Date: Wed, 11 Jan 2023 09:28:20 -0500 Subject: [PATCH] Cleanup media rail crossfade animation. --- .../mediapreview/MediaPreviewV2Fragment.kt | 16 ++++++++++----- .../res/layout/exo_player_control_view.xml | 20 +++++++++++++------ 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediapreview/MediaPreviewV2Fragment.kt b/app/src/main/java/org/thoughtcrime/securesms/mediapreview/MediaPreviewV2Fragment.kt index 76df0e56d4..4f55a37081 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediapreview/MediaPreviewV2Fragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediapreview/MediaPreviewV2Fragment.kt @@ -310,26 +310,32 @@ class MediaPreviewV2Fragment : LoggingFragment(R.layout.fragment_media_preview_v private fun bindAlbumRail(albumThumbnailMedia: List, currentItem: MediaTable.MediaRecord) { val albumRail: RecyclerView = binding.mediaPreviewPlaybackControls.recyclerView if (albumThumbnailMedia.size > 1) { - if (albumRail.visibility == GONE) { + val firstRailDisplay = albumRail.visibility == GONE + if (firstRailDisplay) { albumRail.visibility = View.INVISIBLE + albumRail.alpha = 0f } val railItems = albumThumbnailMedia.map { MediaRailAdapter.MediaRailItem(it, it.uri == currentItem.attachment?.uri) } - albumRailAdapter.submitList(railItems) { albumRail.post { scrollAlbumRailToCurrentAdapterPosition() } } + albumRailAdapter.submitList(railItems) { albumRail.post { scrollAlbumRailToCurrentAdapterPosition(!firstRailDisplay) } } } else { albumRail.visibility = View.GONE albumRailAdapter.submitList(emptyList()) } } - private fun scrollAlbumRailToCurrentAdapterPosition() { + private fun scrollAlbumRailToCurrentAdapterPosition(smooth: Boolean = true) { val currentItemPosition = albumRailAdapter.findSelectedItemPosition() val albumRail: RecyclerView = binding.mediaPreviewPlaybackControls.recyclerView - albumRail.scrollToPosition(currentItemPosition) val offsetFromStart = (albumRail.width - individualItemWidth) / 2 val smoothScroller = OffsetSmoothScroller(requireContext(), offsetFromStart) smoothScroller.targetPosition = currentItemPosition val layoutManager = albumRail.layoutManager as LinearLayoutManager - layoutManager.startSmoothScroll(smoothScroller) + if (smooth) { + layoutManager.scrollToPosition(currentItemPosition) + layoutManager.startSmoothScroll(smoothScroller) + } else { + layoutManager.scrollToPositionWithOffset(currentItemPosition, offsetFromStart) + } } private fun crossfadeViewIn(view: View, duration: Long = 200): Boolean { diff --git a/app/src/main/res/layout/exo_player_control_view.xml b/app/src/main/res/layout/exo_player_control_view.xml index 10f4270119..f76e3b4cf1 100644 --- a/app/src/main/res/layout/exo_player_control_view.xml +++ b/app/src/main/res/layout/exo_player_control_view.xml @@ -49,17 +49,25 @@ - + android:layout_gravity="center"> + + + + +