Kotlin多函数接口回调

1.接口类

import android.animation.Animator

class PathAnimatorDefaultListener :Animator.AnimatorListener{
    private var mPathView: PathView? = null
    protected var isCancel:Boolean = false

    fun setTarget(pathView: PathView) {
        this.mPathView = pathView
    }

    private var _OnAnimationRepeat:((animation: Animator) -> Unit)? = null
    fun animationRepeat(RepeatListener:(animation: Animator) -> Unit){
        _OnAnimationRepeat = RepeatListener
    }
    override fun onAnimationRepeat(animation: Animator) {
        _OnAnimationRepeat?.invoke(animation)
    }

    private var _OnAnimationStart:((animation: Animator) -> Unit)? = null
    fun animationStart(StartListener:(animation: Animator) -> Unit){
        _OnAnimationStart = StartListener
    }
    override fun onAnimationStart(animation: Animator) {
        _OnAnimationStart?.invoke(animation)
        isCancel = false
    }

    private var _OnAnimationEnd:((animation: Animator) -> Unit)? = null
    fun animationEnd(EndListener:(animation: Animator) -> Unit){
        _OnAnimationEnd = EndListener
    }
    override fun onAnimationEnd(animation: Animator) {
        _OnAnimationEnd?.invoke(animation)
        mPathView!!.showPainterActually = false
    }

    private var _OnAnimationCancel:((animation: Animator) -> Unit)? = null
    fun animationCancel(CancelListener:(animation: Animator) -> Unit){
        _OnAnimationCancel = CancelListener
    }
    override fun onAnimationCancel(animation: Animator) {
        _OnAnimationCancel?.invoke(animation)
        isCancel = true
    }
}

2. 调用类

fun setAnimatorListener(animatorListener: Animator.AnimatorListener) {
        mAnimatorListener = animatorListener
        (mAnimatorListener as PathAnimatorDefaultListener).setTarget(this)
        if (mAnimator != null) {
            mAnimator!!.removeAllListeners()
            mAnimator!!.addListener(mAnimatorListener)
        }
    }

    fun setPathAnimatorDefaultListener(listener: PathAnimatorDefaultListener.() -> Unit){
        val ca = PathAnimatorDefaultListener()
        ca.listener()
        setAnimatorListener(ca)
    }

3.最终调用

asyncText.setPathAnimatorDefaultListener {
    animationEnd {
        asyncText.showFillColorText()                
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值