實現控件漸變式的顯示和消失,這里我們用到的是alphaAnimation
這里不做api的介紹,很簡單,度娘一堆一堆的,我這邊僅僅是把代碼寫出來,大家一看就會懂
第一步:創建動畫對象
PRivate AlphaAnimation appearAnimator;private AlphaAnimation appearAnimator2;private AlphaAnimation disappearAnimator;private AlphaAnimation disappearAnimator2;appearAnimator = new AlphaAnimation(0,1);appearAnimator.setDuration(300);appearAnimator2 = new AlphaAnimation(0,1);appearAnimator2.setDuration(300);disappearAnimator = new AlphaAnimation(1,0);disappearAnimator.setDuration(200);disappearAnimator2 = new AlphaAnimation(1,0);disappearAnimator2.setDuration(200);你們一定想問,為什么寫出來兩個,因為我要控制兩個控件的顯示和隱藏,你們又會罵我是個二貨。各位看官別著急,沒有干貨 我才不會寫出來找罵。創建兩個對象的原因:當兩個控件同時消失的時候,如果你使用的是同一個disappearAnimator對象的時候,你一定會發現兩個控件消失后,先執行消失動畫的控件又會立刻顯示出來,我分析的原因是同一個對象被同時使用,內部的getanimatorvalue值從1到0后,被再次執行,但是動畫沒有start,只有設置為1,所以又顯示出來。
第二步:
顯示:
if(rl1.getVisibility()==View.GONE){ rl1.startAnimation(appearAnimator); rl1.setVisibility(View.VISIBLE); rl2.startAnimation(appearAnimator2); rl2.setVisibility(View.VISIBLE);}注意,這里顯示完畢之后一定要把visible狀態變為visible
隱藏:
/** * 漸進式隱藏布局 * @param rl */private void hideRlBack(final RelativeLayout rl,AlphaAnimation disappearAnimator) { rl.startAnimation(disappearAnimator); disappearAnimator.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { rl.setVisibility(View.GONE); } @Override public void onAnimationRepeat(Animation animation) { } });}調用:if(rl1.getVisibility()==View.VISIBLE){ hideRlBack(rl1,disappearAnimator); hideRlBack(rl2,disappearAnimator2);}第一步的紅字重要原因就是這里發生的,大家稍微注意一下。聲明,此文僅僅是讓小白少走點彎路,大牛繞行。
新聞熱點
疑難解答