diff options
Diffstat (limited to 'adapter/src/main/kotlin/ca/allanwang/kau/animators/FadeScaleAnimator.kt')
-rw-r--r-- | adapter/src/main/kotlin/ca/allanwang/kau/animators/FadeScaleAnimator.kt | 76 |
1 files changed, 42 insertions, 34 deletions
diff --git a/adapter/src/main/kotlin/ca/allanwang/kau/animators/FadeScaleAnimator.kt b/adapter/src/main/kotlin/ca/allanwang/kau/animators/FadeScaleAnimator.kt index e968cda..cc73100 100644 --- a/adapter/src/main/kotlin/ca/allanwang/kau/animators/FadeScaleAnimator.kt +++ b/adapter/src/main/kotlin/ca/allanwang/kau/animators/FadeScaleAnimator.kt @@ -1,51 +1,59 @@ package ca.allanwang.kau.animators import android.support.v7.widget.RecyclerView +import android.view.View import android.view.ViewPropertyAnimator /** - * Created by Allan Wang on 2017-06-29. + * Created by Allan Wang on 2017-07-11. */ -open class FadeScaleAnimator(val scaleFactor: Float = 0.7f, itemDelayFactor: Float = 0.125f) : BaseDelayAnimator(itemDelayFactor) { - - override fun addAnimationPrepare(holder: RecyclerView.ViewHolder) { - with(holder.itemView) { - scaleX = scaleFactor - scaleY = scaleFactor - alpha = 0f - } - } +class FadeScaleAnimatorAdd(val scaleFactor: Float = 1.0f, override var itemDelayFactor: Float = 0.125f) : KauAnimatorAdd { - override final fun addAnimation(holder: RecyclerView.ViewHolder): ViewPropertyAnimator { - return super.addAnimation(holder).apply { - scaleX(1f) - scaleY(1f) - alpha(1f) - } + override fun animationPrepare(holder: RecyclerView.ViewHolder): View.() -> Unit = { + scaleX = scaleFactor + scaleY = scaleFactor + alpha = 0f } + override fun animation(holder: RecyclerView.ViewHolder): ViewPropertyAnimator.() -> Unit = { + scaleX(1f) + scaleY(1f) + alpha(1f) + } - final override fun addAnimationCleanup(holder: RecyclerView.ViewHolder) { - with(holder.itemView) { - scaleX = 1f - scaleY = 1f - alpha = 1f - } + override fun animationCleanup(holder: RecyclerView.ViewHolder): View.() -> Unit = { + scaleX = 1f + scaleY = 1f + alpha = 1f } - override fun removeAnimation(holder: RecyclerView.ViewHolder): ViewPropertyAnimator { - return super.removeAnimation(holder).apply { - scaleX(scaleFactor) - scaleY(scaleFactor) - alpha(0f) - } + override fun getDelay(remove: Long, move: Long, change: Long): Long = 0L + +} + +class FadeScaleAnimatorRemove(val scaleFactor: Float = 1.0f, override var itemDelayFactor: Float = 0.125f) : KauAnimatorRemove { + + override fun animation(holder: RecyclerView.ViewHolder): ViewPropertyAnimator.() -> Unit = { + scaleX(scaleFactor) + scaleY(scaleFactor) + alpha(0f) } - override final fun removeAnimationCleanup(holder: RecyclerView.ViewHolder) { - with(holder.itemView) { - translationY = 0f - translationX = 0f - alpha = 1f - } + override fun animationCleanup(holder: RecyclerView.ViewHolder): View.() -> Unit = { + scaleX = 1f + scaleY = 1f + alpha = 1f } + + override fun getDelay(remove: Long, move: Long, change: Long): Long = 0L +} + +class FadeAnimatorChange : KauAnimatorChange { + + override fun changeOldAnimation(holder: RecyclerView.ViewHolder, changeInfo: BaseItemAnimator.ChangeInfo): ViewPropertyAnimator.() -> Unit = { alpha(0f) } + + override fun changeNewAnimation(holder: RecyclerView.ViewHolder): ViewPropertyAnimator.() -> Unit = { alpha(1f) } + + override fun changeAnimationCleanup(holder: RecyclerView.ViewHolder): View.() -> Unit = { alpha = 1f } + }
\ No newline at end of file |