实现控件渐变式的显示和消失,这里我们用到的是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);}第一步的红字重要原因就是这里发生的,大家稍微注意一下。声明,此文仅仅是让小白少走点弯路,大牛绕行。
新闻热点
疑难解答