5

我有一个linearLayout按钮,当我按下按钮时它消失了,当我再次按下按钮时它又回来了。但是它做得太快了,看起来不太好。我通过以下方式做到这一点:

disappearView.setVisibility(View.GONE);

我想添加一些动画......如果我只是将可见性设置为不可见,布局所在的空间仍然存在。所以我尝试了这个:

if (disappearView.getVisibility() == View.VISIBLE){
            Animation out = AnimationUtils.makeOutAnimation(this, true);
            disappearView.startAnimation(out);
            disappearView.setVisibility(View.INVISIBLE);
            disappearView.setVisibility(View.GONE);

        }
        else {
            Animation in = AnimationUtils.loadAnimation(this, android.R.anim.fade_in);
            disappearView.startAnimation(in);
            disappearView.setVisibility(View.VISIBLE);      
        }

这会使动画过快并消失。你根本看不到它。我需要在设置gone后使用线程启动invisible......还是延迟?或者有没有更好的方法来做这一切?

4

2 回答 2

15

我不确定您到底要完成什么...您是否希望 LinearLayout 在一段时间内淡出而不是立即消失?然后一旦它淡出通过 View.GONE 从父级中删除?

如果是这样,您可以使用 AlphaAnimation 进行淡出,然后附加一个像 EvZ 发布的监听器:

AlphaAnimation fadeOutAnimation = new AlphaAnimation(1, 0); // start alpha, end alpha
fadeOutAnimation.setDuration(1000); // time for animation in milliseconds
fadeOutAnimation.setFillAfter(true); // make the transformation persist
fadeOutAnimation.setAnimationListener(new AnimationListener() {         
    @Override
    public void onAnimationEnd(Animation animation) {
        linearLayout.setVisibility(View.GONE);
    }

    @Override
    public void onAnimationRepeat(Animation animation) { }

    @Override
    public void onAnimationStart(Animation animation) { }
});

linearLayout.setAnimation(fadeOutAnimation);
于 2013-01-15T17:14:20.480 回答
4

您可以尝试使用onAnimationEndAnimation.AnimationListener

于 2013-01-15T17:00:30.467 回答