动画(滚动)一个ViewGroup阻止动画中不相关的视图直到完成

时间:2017-07-12 10:51:27

标签: android android-animation kotlin

查看层次结构:

[0/6] View (first view in layout)
...
[2/6] RecyclerView
... 
RecyclerView's children views
...
[6/6] View (point of interest, on top)

目标:

我需要滑入(使用快速输出慢插入器) 当RecyclerView滚动到足够高时,在我的层次结构中的最后一个视图(恰好是自定义工具栏),当RecyclerView足够低时将其滑出。效果类似 在https://material.io/处滑动标题标题。

问题:

工具栏的动画 - (最初隐藏视图)显示:

title_bar.animate()
         .setInterpolator(FastOutSlowInInterpolator())
         .setDuration(500)
         .setStartDelay(0)
         .translationY(0f)
         .start()

并隐藏它:

title_bar.animate()
         .setInterpolator(FastOutSlowInInterpolator())
         .setDuration(500)
         .setStartDelay(0)
         .translationY(someValue)
         .start()

问题是动画在RecyclerView的滚动停止(按键)之前不会运行。

我怀疑动画会以某种方式在FIFO中排队等待,直到滚动停止为止。我不明白为什么会出现这种情况,因为两个视图完全独立且RecyclerView低于我的工具栏。

The Twist

这完全没问题:

title_bar.animate()
         .setInterpolator(FastOutSlowInInterpolator())
         .setDuration(0) // <-- duration is zero
         .setStartDelay(0)
         .translationY(someValue)
         .start()

即。动画立即被触发(也许它等同于title_bar.translationY = someValue?)

那么,这里到底发生了什么?

0 个答案:

没有答案