直播短视频源码,简单布局收缩动画
直播短视频源码,实现简单布局收缩的动画相关源码:private fun showOrhide(//收缩部分linearLayout: LinearLayout,//旋转箭头taskDetailArrow: RelativeLayout) {val scrollView = binding.scrollViewval rect = Rect()linearLayout.getGloba
·
直播短视频源码,实现简单布局收缩的动画相关源码:
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不是找不到而是最外层布局
以上就是关于直播短视频源码中,简单布局收缩动画的相关源码,更多内容欢迎关注之后的文章
本文转载自网络,转载仅为分享干货知识,如有侵权欢迎联系云豹科技进行删除处理
更多推荐


所有评论(0)