Android,setVisibility / animation问题

时间:2013-01-15 16:55:30

标签: java android animation

当我按下按钮时,我有一个linearLayout消失,当我再次按下按钮时它会回来。但它做得如此之快,看起来并不好看。 我这样做是通过:

disappearView.setVisibility(View.GONE);

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

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或延迟?或者有更好的方法来做这一切吗?

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:4)

您可以尝试使用onAnimationEndAnimation.AnimationListener