简单布局收缩动画
16lz
2021-01-23
private fun showOrhide(//收缩部分 linearLayout: LinearLayout, //旋转箭头 taskDetailArrow: RelativeLayout ) { val scrollView = binding.scrollView val rect = Rect() linearLayout.getGlobalVisibleRect(rect) val arrow = taskDetailArrow.getChildAt(1) if (linearLayout.visibility == View.VISIBLE) { arrow.rotation = 180f ObjectAnimator.ofFloat( linearLayout, "translationY", 0.0f, -linearLayout.measuredHeight.toFloat() ).apply { duration = 500 interpolator = AccelerateInterpolator() start() }.addListener(object : Animator.AnimatorListener { override fun onAnimationRepeat(animation: Animator?) { } override fun onAnimationEnd(animation: Animator?) { linearLayout.visibility = View.GONE scrollView.post { scrollView.smoothScrollTo(0, rect.bottom); } } override fun onAnimationCancel(animation: Animator?) { } override fun onAnimationStart(animation: Animator?) { } }) } else { arrow.rotation = 0f ObjectAnimator.ofFloat( linearLayout, "translationY", -linearLayout.measuredHeight.toFloat(), 0.0f ).apply { duration = 500 interpolator = AccelerateInterpolator() start() }.addListener(object : Animator.AnimatorListener { override fun onAnimationRepeat(animation: Animator?) { } override fun onAnimationEnd(animation: Animator?) { linearLayout.visibility = View.VISIBLE scrollView.post { scrollView.smoothScrollTo(0, rect.bottom); } } override fun onAnimationCancel(animation: Animator?) { } override fun onAnimationStart(animation: Animator?) { } }) }
根据传入的View的visibility来执行收缩或者展开,scrollView不是找不到而是最外层布局哦。
更多相关文章
- Android Studio 添加百分比布局库的依赖报错 第一行代码
- Android 基础布局控件自定义view使用练习
- 安卓自定义流式布局
- Android自定义dialog弹出布局
- LinearLayout 线性布局