首页 > 学院 > 开发设计 > 正文

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

2019-11-09 15:43:36
字体:
来源:转载
供稿:网友

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

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


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表