Android动画之Lottie动画使用(截图问题)

序、还一个技术债。

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
            }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值