diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-11-11 12:22:48 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-11-26 18:42:48 +0000 |
| commit | e47ec6bf1346ae5626ded77897236a0b2b739591 (patch) | |
| tree | 0a9f36993f2f4ae2b7d06f96a06296182f170809 /android/src | |
| parent | 1d0cb9e9168f4b1564f17abd83433b21dd0200f2 (diff) | |
| download | mullvadvpn-e47ec6bf1346ae5626ded77897236a0b2b739591.tar.xz mullvadvpn-e47ec6bf1346ae5626ded77897236a0b2b739591.zip | |
Fix title collapse animation hook
Diffstat (limited to 'android/src')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/CustomItemAnimator.kt | 22 | ||||
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/CustomRecyclerView.kt | 11 |
2 files changed, 24 insertions, 9 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/CustomItemAnimator.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/CustomItemAnimator.kt index e35f4283b2..06244067b8 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/CustomItemAnimator.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/CustomItemAnimator.kt @@ -1,10 +1,13 @@ package net.mullvad.mullvadvpn.ui.widget import android.support.v7.widget.DefaultItemAnimator +import android.support.v7.widget.RecyclerView.LayoutManager import android.support.v7.widget.RecyclerView.ViewHolder import kotlin.math.round class CustomItemAnimator : DefaultItemAnimator() { + var layoutManager: LayoutManager? = null + var onMove: ((Int, Int) -> Unit)? = null override fun animateMove( @@ -16,17 +19,20 @@ class CustomItemAnimator : DefaultItemAnimator() { ): Boolean { if (super.animateMove(holder, fromX, fromY, toX, toY)) { var view = holder.itemView - var translationX = view.translationX - var translationY = view.translationY - view.animate().setUpdateListener { _ -> - val deltaX = round(translationX - view.translationX) - val deltaY = round(translationY - view.translationY) + if (view == layoutManager?.getChildAt(0)) { + var translationX = view.translationX + var translationY = view.translationY + + view.animate().setUpdateListener { _ -> + val deltaX = round(translationX - view.translationX) + val deltaY = round(translationY - view.translationY) - onMove?.invoke(deltaX.toInt(), deltaY.toInt()) + onMove?.invoke(deltaX.toInt(), deltaY.toInt()) - translationX -= deltaX - translationY -= deltaY + translationX -= deltaX + translationY -= deltaY + } } return true diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/CustomRecyclerView.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/CustomRecyclerView.kt index ac97b4d831..3e0c4d1d70 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/CustomRecyclerView.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/CustomRecyclerView.kt @@ -2,10 +2,13 @@ package net.mullvad.mullvadvpn.ui.widget import android.content.Context import android.support.v7.widget.RecyclerView +import android.support.v7.widget.RecyclerView.LayoutManager import android.util.AttributeSet import net.mullvad.mullvadvpn.util.ListenableScrollableView class CustomRecyclerView : RecyclerView, ListenableScrollableView { + private val customItemAnimator = CustomItemAnimator() + override var horizontalScrollOffset = 0 override var verticalScrollOffset = 0 @@ -20,13 +23,19 @@ class CustomRecyclerView : RecyclerView, ListenableScrollableView { } init { - itemAnimator = CustomItemAnimator().apply { + itemAnimator = customItemAnimator.apply { onMove = { horizontalDelta, verticalDelta -> dispatchScrollEvent(horizontalDelta, verticalDelta) } } } + override fun setLayoutManager(layoutManager: LayoutManager?) { + super.setLayoutManager(layoutManager) + + customItemAnimator.layoutManager = layoutManager + } + override fun onScrolled(horizontalDelta: Int, verticalDelta: Int) { super.onScrolled(horizontalDelta, verticalDelta) |
