序、还一个技术债。
Lottie动画的使用
添加依赖
implementation("com.airbnb.android:lottie:3.4.1")
xml
<com.airbnb.lottie.LottieAnimationView
android:id="@+id/lottie"
android:layout_width="50dp"
android:layout_height="50dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
/>
View代码
lottieAnimationView!!.setAnimation("lottie/data.json")
lottieAnimationView!!.imageAssetsFolder = "lottie/images"
lottieAnimationView!!.playAnimation()
lottieAnimationView!!.visibility = View.VISIBLE
Lottie动画截图
需求:在一个页面上,点击某个地方,弹窗Lottie动画,并且截图。
@SuppressLint("ClickableViewAccessibility")
private fun initOnClick() {
lottieAnimationView!!.addAnimatorListener(object : Animator.AnimatorListener {
override fun onAnimationStart(p0: Animator) {
}
override fun onAnimationEnd(p0: Animator) {
lottieAnimationView!!.visibility = View.GONE
}
override fun onAnimationCancel(p0: Animator) {
}
override fun onAnimationRepeat(p0: Animator) {
}
})
iv_content!!.setOnTouchListener { view, motionEvent ->
if(lottieAnimationView!!.isAnimating){
return@setOnTouchListener true
}
Toast.makeText(
MainActivity3@ this,
motionEvent.x.toString() + "--" + motionEvent.y,
Toast.LENGTH_SHORT
).show()
if (motionEvent.action == MotionEvent.ACTION_DOWN) {
lottieAnimationView!!.x = motionEvent.x
lottieAnimationView!!.y = motionEvent.y
lottieAnimationView!!.setAnimation("lottie/data.json")
lottieAnimationView!!.imageAssetsFolder = "lottie/images"
lottieAnimationView!!.playAnimation()
lottieAnimationView!!.visibility = View.VISIBLE
}
uiThreadDelay(1000) {
takeBitmap()
}
false
}
}
背景:如果多次点击,不停的进行takeBitmap截图的话,会保存View的bitmap有错乱或者截取不到lottie动画。
主要是
if(lottieAnimationView!!.isAnimating){
return@setOnTouchListener true
}