2017-09-06 53 views
0

我有一個偵聽器,偵聽並使動畫聚焦的項目變大一點。自定義動畫觸發兩次

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()觸發器)時,元素將其大小更改爲正常 - 這是可以的。但是,當我導航到其他元素的時候,前一個擴展了兩次。我如何需要修改我的onFocusListener,以便知道如果我通過單擊某個項目觸發customFunction(),則不應該擴展兩次。任何想法都歡迎。

回答

0

如果我的理解對不對你的問題,你可能必須嘗試:itemView. setOnFocusChangeListener(null);customFunction()

+0

這不起作用 – JoshuaMad