相信大家都有嘗試過,在為元件設定動畫的時候會使用Visiable與invisiable來操作,這樣子可以很檢的的實現動畫效果,但是有時候並不是只是要讓元件不可見而已,而真正的將他從畫面移除,也就是GONE屬性,這時候大家有沒有發現設置GONE的元件,即使設定了動畫效果但是卻看不到,原因很簡單,因為它在動畫開始前就先消失了。
此篇文章在這裡找到一個解決辦法,也就是為我們的動畫註冊監聽器,來監測目前動畫的狀態。
參考以下程式碼:
Animation alphaAnim = AnimationUtils.loadAnimation(getApplicationContext(), android.R.anim.fade_out);
alphaAnim.setAnimationListener(new AnimationListener() { public void onAnimationStart(Animation arg0) { } public void onAnimationRepeat(Animation arg0) { } public void onAnimationEnd(Animation arg0) { mDrawPaneLayout.setVisibility(View.GONE); } }); mLayout.setAnimation(alphaAnim); mLayout.setVisibility(View.INVISIBLE); |
首先我們宣告一個動畫,該動畫使用android內建的fade_out效果,再來我們為這個動畫類別註冊一個監聽動畫的監聽器,這邊是重點,我們在onAnimationEnd寫入將元件從畫面移除的程式碼,而外部依然使用INVISIBLE屬性來達到元件隱藏,這時候我們會看到動畫撥放,當動畫撥放結束,這時候會被監聽到,此時會執行GONE將元件移出。
雖然這是個很簡單的思維,但相信對大家會有幫助。
沒有留言:
張貼留言