Cleanup media rail crossfade animation.

main
clark-signal 2023-01-11 09:28:20 -05:00 zatwierdzone przez Alex Hart
rodzic 6120902ff5
commit 9e903a023f
2 zmienionych plików z 25 dodań i 11 usunięć

Wyświetl plik

@ -310,26 +310,32 @@ class MediaPreviewV2Fragment : LoggingFragment(R.layout.fragment_media_preview_v
private fun bindAlbumRail(albumThumbnailMedia: List<Media>, 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 {

Wyświetl plik

@ -49,17 +49,25 @@
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/media_preview_album_rail"
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:animateLayoutChanges="false"
android:layout_marginStart="12dp"
android:layout_marginEnd="12dp"
android:layout_marginBottom="11dp"
android:orientation="horizontal"
android:visibility="gone"
tools:layout_height="64dp" />
android:layout_gravity="center">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/media_preview_album_rail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:visibility="gone"
tools:layout_height="64dp" />
</FrameLayout>
<LinearLayout
android:layout_width="match_parent"