Android動畫之淡入淡出


為了更好的說明Android動畫的淡入淡出效果,這里以一個場景為例: 界面上有兩個View 控件,兩個View交替顯示,當一個View淡入顯示,另一個View淡出不可見。

我們把當前要顯示的View叫showView, 要隱藏不可見的view叫hideView。

 final View showView = findViewById(***)
 final View hideView = findViewById(***)

首先說淡入顯示,既然要顯示,那么View要設置為可見,要實現淡入的效果,就需要將透明度先設置為0

showView.setAlpha(0f);
showView.setVisibility(View.VISIBLE);

接下來就要調用showView.animate()方法來實現動畫效果,設置最終的透明度為1。就可以達到不可見->模糊->完全顯示

   showView.animate()
              .alpha(1f)
              .setDuration(5000)
              .setListener(null);

setDuration是設置動畫的持續時間,這里設置的是5秒。 setListener這里先緩一緩,最后我會說明這個方法的作用。

這樣showView的淡入效果就實現了,但是同時也必須在同一時間來完成hideView的淡出隱藏,否則兩個view就重疊了。

知道如何實現淡入,也就知道如何實現淡出了 - 將透明度由1變到0,最后將hideView設為不可見(在onAnimationEnd事件中設置), 調用hideView.animate()來實現動畫效果。就可以達到顯示->模糊->完全不可見

 hideView.animate()
              .alpha(0f)
              .setDuration(mShortAnimationDuration)
              .setListener(new AnimatorListenerAdapter() {
                  @Override
                  public void onAnimationEnd(Animator animation) {
                      hideView.setVisibility(View.GONE);
                  }
              });


好,目前為止,淡入淡出的效果已經實現,但是相信有細心的童鞋會發現如下細節

1 對於showView, 是先調用showView.setVisibility(View.VISIBLE)設置為可見, 然后才調用showView.animate()

  對於hideView, 是先調用 hideView.animate(),最后在onAnimationEnd事件中調用hideView.setVisibility(View.GONE);設置為不可見
2 showView為什么要調用setListener(null), 這跟我文章開頭提到的場景有關,因為我們要實現的是兩個View交替淡入淡出顯示,所以當前的showView就是上一次的hideView,而hideView是設置了listener了,並且實現的是設置view為不可見,所以必須清掉。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM