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

本文介绍了如何在Android中实现控件的渐变显示和消失效果,重点使用了AlphaAnimation。在创建动画对象时,为了避免同一动画对象导致的显示异常,需要创建两个独立的对象。显示动画执行后需将控件状态设为visible,隐藏动画执行则让控件不可见。此教程适用于Android开发初学者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值