Glide加载webp动画及监听动画播放结束

一、webpdecoder 源码

https://github.com/zjupure/GlideWebpDecoder

二、 引入

    // webpdecoder
    implementation "com.github.zjupure:webpdecoder:2.0.4.13.1"
    // glide 4.10.0+
    implementation "com.github.bumptech.glide:glide:4.13.1"
    annotationProcessor "com.github.bumptech.glide:compiler:4.13.1"

三、 布局

  <ImageView
    android:id="@+id/iv_load"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

  <ImageView
    android:layout_marginTop="30dp"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintBottom_toBottomOf="parent"
    android:id="@+id/iv_order_click"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    />

四、 使用

  var ivLoad = findViewById<ImageView>(R.id.iv_load)
        var ivOrderClick = findViewById<ImageView>(R.id.iv_order_click)
        var circleCrop = CenterInside()
        ivOrderClick.setOnClickListener {
            Toast.makeText(this, "点击了小手跳转", Toast.LENGTH_SHORT).show()
        }
        Glide.with(this).load(R.mipmap.iv_load_guide).optionalTransform(circleCrop)
            .optionalTransform(WebpDrawable::class.java, WebpDrawableTransformation(circleCrop))
            .addListener(object : RequestListener<Drawable> {
                override fun onLoadFailed(
                    e: GlideException?,
                    model: Any?,
                    target: Target<Drawable>?,
                    isFirstResource: Boolean
                ): Boolean {
                    return false
                }

                override fun onResourceReady(
                    resource: Drawable?,
                    model: Any?,
                    target: Target<Drawable>?,
                    dataSource: DataSource?,
                    isFirstResource: Boolean
                ): Boolean {
                    var webpDrawable = (resource as WebpDrawable)
                    //设置循环次数
                    webpDrawable.loopCount = 1
                    //动画开始结束监听
                    webpDrawable.registerAnimationCallback(object :
                        Animatable2Compat.AnimationCallback() {
                        override fun onAnimationStart(drawable: Drawable?) {
                            super.onAnimationStart(drawable)
                        }

                        override fun onAnimationEnd(drawable: Drawable?) {
                            super.onAnimationEnd(drawable)
                            Glide.with(this@MainActivity).load(R.mipmap.iv_order_click)
                                .optionalTransform(circleCrop)
                                .optionalTransform(
                                    WebpDrawable::class.java,
                                    WebpDrawableTransformation(circleCrop)
                                )
                                .into(ivOrderClick)
                        }
                    })
                    return false
                }

            })
            .into(ivLoad)
    }

五、 附加

https://www.csdn.net/tags/MtjaggzsNDgwOC1ibG9n.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黄毛火烧雪下

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值