2017-04-11 22 views
-1

我遇到了問題,其中setVisibility()在向視圖應用動畫一次後無法正常工作。View.clearAnimation和Animation.AnimationListener.onAnimationEnd方法如何相關?

問題
公共無效顯示():
1. setVisibility(View.VISIBLE)上調用視圖
2.查看外觀動畫: view.animate()α( 1.0F).setDuration(3000)。 等...

公共無效的hide()
1.查看消失動畫: view.animate()α(0.0F).setDuration(3000)。 等...
2.查看可見性設置爲GONE

  • 非常首場演出()方法調用正確顯示的一切。
  • 之後調用hide()之後,視圖被正確隱藏。
  • 調用顯示(現在),動畫視圖外觀到動畫的非常結束,之後立即在視圖中消失(佈局檢查表明其最終的知名度就沒了)

這是我最初的動畫代碼:

myGridView.animate() 
    .alpha(0.0f) 
    .setDuration(100); 

出人意料的是,加入AnimatorListenerAdapter和壓倒一切的onAnimationEnd沒有做其他任何事情解決了這個問題。 最近,我發現其他SO solution,他們在setVisibility()之前,他們呼籲clearAnimation()的看法。

所以,這個代碼的工作:

myGridView.clearAnimation(); 
myGridView.setVisibility(View.VISIBLE); 

我最後的代碼,我貼有:

myGridView.animate() 
     .alpha(0.0f) 
     .setDuration(100); 
     .setListener(new AnimatorListenerAdapter() { 
      @Override 
      public void onAnimationEnd(Animator animation) { 
       super.onAnimationEnd(animation); 
       myGridView.clearAnimation(); 
       myGridView.setVisibility(GridView.GONE); 
      } 
     }); 

問題
爲什麼壓倒一切的工作onAnimationEnd自身?它與clearAnimation有什麼關係?

+0

我無法得到以前發生的事情,現在發生了。 – azizbekian

+0

@azizbekian公平點。我現在編輯了這個問題。 視圖用於在動畫完成後立即消失,但在開始動畫之前,我將其可見性設置爲可見。覆蓋onAnimationEnd方法後,不僅在動畫開始時,而且在執行完成後,它仍然保持VISIBLE。 – Evusas

回答

0

爲什麼壓倒一切onAnimationEnd曾在自己的?它是不知何故與clearAnimation

clearAnimation()將啓動onAnimationCancel()其次onAnimationEnd()Animation,這種觀點已被調用。