入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

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

创建时间:2017-02-08 投稿人: 浏览次数:1347

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

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


声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
  • 上一篇:没有了
  • 下一篇:没有了
未上传头像