Пожалуйста, не отмечайте его как дубликат, ни один из ответов не помог мне, поэтому отправка нового вопроса
Я использую ValueAnimator
для
Вход в анимацию
Cardview: измените левое и правое поле с 12dp на 0dp, чтобы ширина соответствовала родительскому
tablayout: измените высоту 40dp на 0dp
Выходная анимация Реверс входной анимации
Эти анимации хороши в высокопроизводительных устройствах, таких как OnePlus 7, Moto и т. Д., Но в бюджетных устройствах этоочень лаги
мой код
/************** Animating Tab Height to 0 size **************/
tabLayoutHeightAnim = ValueAnimator.ofInt(tabLayout.measuredHeight, 0)
tabLayoutHeightAnim?.addUpdateListener {
var height = it.animatedValue
val layoutParams = tabLayout.layoutParams as ViewGroup.LayoutParams
layoutParams.height = height as Int
tabLayout.layoutParams = layoutParams
tabLayout.invalidate()
tabLayout.requestLayout()
}
tabLayoutHeightAnim?.duration = duration
tabLayoutHeightAnim?.interpolator = AccelerateDecelerateInterpolator()
tabLayoutHeightAnim?.start()
/************** Animating Searchview margin from 12dp to 0 dp **************/
val layoutParams = cvSearch.layoutParams as ConstraintLayout.LayoutParams
searchViewWidthAnim = ValueAnimator.ofInt(layoutParams.leftMargin, 0)
searchViewWidthAnim?.addUpdateListener {
var zeroMargin = it.animatedValue
layoutParams.leftMargin = zeroMargin as Int
layoutParams.rightMargin = zeroMargin
cvSearch.cardElevation = resourceFinder.getDimension(R.dimen.view_0dp).toFloat()
changeStatusbarColor(resourceFinder.getColour(R.color.white))
cvSearch.layoutParams = layoutParams
cvSearch.invalidate()
cvSearch.requestLayout()
}
searchViewWidthAnim?.duration = duration
searchViewWidthAnim?.interpolator = AccelerateDecelerateInterpolator()
searchViewWidthAnim?.start()
![enter image description here](https://i.stack.imgur.com/sI5hL.gif)