Improve media album rail entrance animation.
This commit is contained in:
parent
77be721f5a
commit
a46fc96ff1
3 changed files with 12 additions and 13 deletions
|
@ -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
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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>
|
||||||
|
|
Loading…
Add table
Reference in a new issue