Android动态设置淡入淡出动画

设置淡出动画不是问题,难点在于淡入动画。

对于一个组件,当我们要用一个淡出动画隐藏它时,需要设置的值包括透明度alpha和可见度visibility。我们简单的设置在动画结尾时该组件可见度为GONE即可。

但对于淡入动画,如果在设置淡入之前,已经使该组件淡出,我们首先要回调刚才设置的visibility为可见的VISIBILE,如此一来,才能使我们的淡入可见。

我们不应该像淡出动画那样,在动画结束时才设置可见度,因为组件不可见时,附加在它之上的动画自然也不可见了。此时不会是一个组件淡出,而是在动画时长结束后直接显示出该组件。

public static void fadeAnima(final View view, int visibility) {
    if (visibility == View.GONE) {
        // 如果需要将视图隐藏,直接启动淡出动画
        view.animate()
            .alpha(0f)
            .setDuration(300)
            .withEndAction(new Runnable() {
                @Override
                public void run() {
                    view.setVisibility(View.GONE);
                }
            }).start();
    } else {
        // 如果需要显示视图,则先把视图设置可见且alpha为0
        view.setVisibility(View.VISIBLE);
        view.setAlpha(0f);
        view.animate()
            .alpha(1f)
            .setDuration(300)
            .start();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值