控件渐变式显示和消失动画,AlphaAnimation

来源:互联网 发布:nba十大得分后卫 知乎 编辑:程序博客网 时间:2024/04/18 09:16

实现控件渐变式的显示和消失,这里我们用到的是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);}
第一步的红字重要原因就是这里发生的,大家稍微注意一下。

声明,此文仅仅是让小白少走点弯路,大牛绕行。


0 0
原创粉丝点击