Improve media album rail entrance animation.

This commit is contained in:
Nicholas 2022-11-22 10:03:17 -05:00 committed by Cody Henthorne
parent 77be721f5a
commit a46fc96ff1
3 changed files with 12 additions and 13 deletions

View file

@ -66,6 +66,7 @@ import org.thoughtcrime.securesms.util.ViewUtil
import org.thoughtcrime.securesms.util.visible import org.thoughtcrime.securesms.util.visible
import java.util.Locale import java.util.Locale
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
import kotlin.math.roundToInt
class MediaPreviewV2Fragment : Fragment(R.layout.fragment_media_preview_v2), MediaPreviewFragment.Events { class MediaPreviewV2Fragment : Fragment(R.layout.fragment_media_preview_v2), MediaPreviewFragment.Events {
private val TAG = Log.tag(MediaPreviewV2Fragment::class.java) private val TAG = Log.tag(MediaPreviewV2Fragment::class.java)
@ -78,9 +79,12 @@ class MediaPreviewV2Fragment : Fragment(R.layout.fragment_media_preview_v2), Med
private lateinit var fullscreenHelper: FullscreenHelper private lateinit var fullscreenHelper: FullscreenHelper
private lateinit var albumRailAdapter: MediaRailAdapter private lateinit var albumRailAdapter: MediaRailAdapter
private var individualItemWidth: Int = 0
override fun onAttach(context: Context) { override fun onAttach(context: Context) {
super.onAttach(context) super.onAttach(context)
fullscreenHelper = FullscreenHelper(requireActivity()) fullscreenHelper = FullscreenHelper(requireActivity())
individualItemWidth = context.resources.getDimension(R.dimen.media_rail_item_size).roundToInt()
} }
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
@ -293,19 +297,14 @@ class MediaPreviewV2Fragment : Fragment(R.layout.fragment_media_preview_v2), Med
val currentItemPosition = albumRailAdapter.currentItemPosition val currentItemPosition = albumRailAdapter.currentItemPosition
val currentList = albumRailAdapter.currentList val currentList = albumRailAdapter.currentList
val albumRail: RecyclerView = binding.mediaPreviewPlaybackControls.recyclerView val albumRail: RecyclerView = binding.mediaPreviewPlaybackControls.recyclerView
var selectedItemWidth = -1 albumRail.scrollToPosition(currentItemPosition)
for (i in currentList.indices) { for (i in currentList.indices) {
val isSelected = i == currentItemPosition val isSelected = i == currentItemPosition
val stableId = albumRailAdapter.getItemId(i) val stableId = albumRailAdapter.getItemId(i)
val viewHolder = albumRail.findViewHolderForItemId(stableId) as? MediaRailAdapter.MediaRailViewHolder val viewHolder = albumRail.findViewHolderForItemId(stableId) as? MediaRailAdapter.MediaRailViewHolder
if (viewHolder != null) { viewHolder?.setSelectedItem(isSelected)
viewHolder.setSelectedItem(isSelected)
if (isSelected) {
selectedItemWidth = viewHolder.itemView.width
} }
} val offsetFromStart = (albumRail.width - individualItemWidth) / 2
}
val offsetFromStart = (albumRail.width - selectedItemWidth) / 2
val smoothScroller = OffsetSmoothScroller(requireContext(), offsetFromStart) val smoothScroller = OffsetSmoothScroller(requireContext(), offsetFromStart)
smoothScroller.targetPosition = currentItemPosition smoothScroller.targetPosition = currentItemPosition
val layoutManager = albumRail.layoutManager as LinearLayoutManager val layoutManager = albumRail.layoutManager as LinearLayoutManager

View file

@ -11,16 +11,15 @@
<org.thoughtcrime.securesms.components.ThumbnailView <org.thoughtcrime.securesms.components.ThumbnailView
android:id="@+id/rail_item_image" android:id="@+id/rail_item_image"
android:layout_width="44dp" android:layout_width="@dimen/media_rail_thumbnail_size"
android:layout_height="44dp" android:layout_height="@dimen/media_rail_thumbnail_size"
android:layout_gravity="center" android:layout_gravity="center"
android:background="@drawable/mediarail_media_outline"
app:thumbnail_radius="8dp"/> app:thumbnail_radius="8dp"/>
<ImageView <ImageView
android:id="@+id/rail_item_outline" android:id="@+id/rail_item_outline"
android:layout_width="46dp" android:layout_width="@dimen/media_rail_item_size"
android:layout_height="46dp" android:layout_height="@dimen/media_rail_item_size"
android:layout_gravity="center" android:layout_gravity="center"
android:src="@drawable/mediarail_media_outline" android:src="@drawable/mediarail_media_outline"
android:visibility="gone" android:visibility="gone"

View file

@ -244,4 +244,5 @@
<dimen name="media_preview_button_horizontal_margin">8dp</dimen> <dimen name="media_preview_button_horizontal_margin">8dp</dimen>
<dimen name="media_preview_lottie_button_dimen">36dp</dimen> <dimen name="media_preview_lottie_button_dimen">36dp</dimen>
<dimen name="media_rail_item_size">46dp</dimen> <dimen name="media_rail_item_size">46dp</dimen>
<dimen name="media_rail_thumbnail_size">44dp</dimen>
</resources> </resources>