Skip to content
This repository was archived by the owner on Dec 9, 2024. It is now read-only.

Commit 5f2843c

Browse files
committed
List > Loading: Save and restore itemAnimator on transition
1 parent e3653da commit 5f2843c

File tree

1 file changed

+18
-3
lines changed

1 file changed

+18
-3
lines changed

Motion/app/src/main/java/com/example/android/motion/demo/loading/LoadingActivity.kt

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,13 @@ import androidx.appcompat.widget.Toolbar
2525
import androidx.lifecycle.observe
2626
import androidx.recyclerview.widget.RecyclerView
2727
import androidx.transition.Fade
28+
import androidx.transition.Transition
29+
import androidx.transition.TransitionListenerAdapter
2830
import androidx.transition.TransitionManager
2931
import com.example.android.motion.R
3032
import com.example.android.motion.demo.FAST_OUT_SLOW_IN
33+
import com.example.android.motion.demo.LARGE_EXPAND_DURATION
34+
import com.example.android.motion.demo.plusAssign
3135
import com.example.android.motion.demo.transitionSequential
3236
import com.example.android.motion.ui.EdgeToEdge
3337

@@ -40,15 +44,24 @@ class LoadingActivity : AppCompatActivity() {
4044

4145
private lateinit var list: RecyclerView
4246
private val fade = transitionSequential {
43-
duration = 300L
47+
duration = LARGE_EXPAND_DURATION
4448
interpolator = FAST_OUT_SLOW_IN
45-
addTransition(Fade(Fade.OUT))
46-
addTransition(Fade(Fade.IN))
49+
this += Fade(Fade.OUT)
50+
this += Fade(Fade.IN)
51+
addListener(object : TransitionListenerAdapter() {
52+
override fun onTransitionEnd(transition: Transition) {
53+
if (savedItemAnimator != null) {
54+
list.itemAnimator = savedItemAnimator
55+
}
56+
}
57+
})
4758
}
4859

4960
private val placeholderAdapter = PlaceholderAdapter()
5061
private val cheeseAdapter = CheeseAdapter()
5162

63+
private var savedItemAnimator: RecyclerView.ItemAnimator? = null
64+
5265
override fun onCreate(savedInstanceState: Bundle?) {
5366
super.onCreate(savedInstanceState)
5467
setContentView(R.layout.loading_activity)
@@ -66,6 +79,8 @@ class LoadingActivity : AppCompatActivity() {
6679
viewModel.cheeses.observe(this) { cheeses ->
6780
if (list.adapter != cheeseAdapter) {
6881
list.adapter = cheeseAdapter
82+
savedItemAnimator = list.itemAnimator
83+
list.itemAnimator = null
6984
TransitionManager.beginDelayedTransition(list, fade)
7085
}
7186
cheeseAdapter.submitList(cheeses)

0 commit comments

Comments
 (0)