Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import android.view.View
- import android.view.ViewGroup
- import android.view.animation.Animation
- import android.view.animation.Transformation
- /**
- * Created by andrii.kovalchuk on 3/27/17.
- */
- class DropDownAnimation(
- private val view: View,
- var down: Boolean,
- private val durationAnimation: Long
- ) : Animation() {
- init {
- this.duration = durationAnimation
- }
- override fun applyTransformation(interpolatedTime: Float, transformation: Transformation?) {
- when {
- down -> expand(interpolatedTime, transformation)
- else -> collapse(interpolatedTime, transformation)
- }
- }
- override fun willChangeBounds(): Boolean {
- return true
- }
- private fun expand(interpolatedTime: Float, transformation: Transformation?) {
- view.measure(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
- val targetHeight = view.measuredHeight
- // Older versions of android (pre API 21) cancel animations for views with a height of 0.
- view.layoutParams.height = 1
- view.visibility = View.VISIBLE
- view.layoutParams.height = if (interpolatedTime == 1f)
- ViewGroup.LayoutParams.WRAP_CONTENT
- else
- (targetHeight * interpolatedTime).toInt()
- view.requestLayout()
- }
- private fun collapse(interpolatedTime: Float, transformation: Transformation?) {
- val initialHeight = view.measuredHeight
- if (interpolatedTime == 1f) {
- view.visibility = View.GONE
- } else {
- view.layoutParams.height = initialHeight - (initialHeight * interpolatedTime).toInt()
- view.requestLayout()
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement