@@ -25,9 +25,13 @@ import androidx.appcompat.widget.Toolbar
25
25
import androidx.lifecycle.observe
26
26
import androidx.recyclerview.widget.RecyclerView
27
27
import androidx.transition.Fade
28
+ import androidx.transition.Transition
29
+ import androidx.transition.TransitionListenerAdapter
28
30
import androidx.transition.TransitionManager
29
31
import com.example.android.motion.R
30
32
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
31
35
import com.example.android.motion.demo.transitionSequential
32
36
import com.example.android.motion.ui.EdgeToEdge
33
37
@@ -40,15 +44,24 @@ class LoadingActivity : AppCompatActivity() {
40
44
41
45
private lateinit var list: RecyclerView
42
46
private val fade = transitionSequential {
43
- duration = 300L
47
+ duration = LARGE_EXPAND_DURATION
44
48
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
+ })
47
58
}
48
59
49
60
private val placeholderAdapter = PlaceholderAdapter ()
50
61
private val cheeseAdapter = CheeseAdapter ()
51
62
63
+ private var savedItemAnimator: RecyclerView .ItemAnimator ? = null
64
+
52
65
override fun onCreate (savedInstanceState : Bundle ? ) {
53
66
super .onCreate(savedInstanceState)
54
67
setContentView(R .layout.loading_activity)
@@ -66,6 +79,8 @@ class LoadingActivity : AppCompatActivity() {
66
79
viewModel.cheeses.observe(this ) { cheeses ->
67
80
if (list.adapter != cheeseAdapter) {
68
81
list.adapter = cheeseAdapter
82
+ savedItemAnimator = list.itemAnimator
83
+ list.itemAnimator = null
69
84
TransitionManager .beginDelayedTransition(list, fade)
70
85
}
71
86
cheeseAdapter.submitList(cheeses)
0 commit comments