自定义动画触发两次

时间:2017-09-06 19:26:54

标签: android animation

我有一个监听器,可以通过动画监听并使重点项目变得更大。

private fun focus() {
    itemView?.setOnFocusChangeListener { _, hasFocus ->
        if (hasFocus) {
            val anim : Animation = AnimationUtils.loadAnimation(itemView.context, R.anim.scale_in)
            itemView.startAnimation(anim)
            anim.fillAfter = true
        } else {
            val anim : Animation = AnimationUtils.loadAnimation(itemView.context, R.anim.scale_out)
            itemView.startAnimation(anim)
            anim.fillAfter = true
        }
    }
}

除了这个监听器,我还制作了自定义功能,当点击聚焦项目时,它实际上会改变大小恢复正常

fun customFunction(): Unit = with(itemView) {
    val anim : Animation = AnimationUtils.loadAnimation(itemView.context, R.anim.scale_out)
    itemView.startAnimation(anim)
    anim.fillAfter = true
}

问题: focus()customFunction()功能正常。问题是,当我点击聚焦元素(customFunction()触发器)时,元素会将其大小更改为正常 - 这没关系。但是当我导航到其他元素时,前一个元素会向外扩展两次。如果我通过点击某个项目触发了customFunction(),我怎么需要修改我的onFocusListener才能知道我不应该缩小两次。任何想法都受到欢迎。

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题,你可能需要尝试:itemView. setOnFocusChangeListener(null);

中的customFunction()