在Android中的动画之后,Invisibility和GONE不起作用

时间:2013-03-29 05:30:53

标签: java android android-animation

我使用此代码来点击图像框,在另一个对象上运行动画,并通过visibility.GONE自行消除。但它不起作用!!这是我的代码:

againbtn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            //answer button on animation
            Animation anim2 = AnimationUtils.loadAnimation(MainActivity.this, R.anim.askbtnonanim);
            anim2.setFillAfter(true);
            askbtn.startAnimation(anim2);

            //gone myselft (againbtn)
            againbtn.setVisibility(View.GONE);
        }
    });

如果从这段代码中删除3个动画行,一切正常并且有效,但现在却没有。但为什么?它与anim2.setFillAfter(true)有关; ???我把它放了,因为我的动画运行了一次而且没有重置!请帮帮我

5 个答案:

答案 0 :(得分:4)

试试这个 你必须清除视图动画然后你可以setVisibility

animation.setAnimationListener(new Animation.AnimationListener() {

@Override
public void onAnimationStart(Animation animation) {}

@Override
public void onAnimationEnd(Animation animation) {
view.clearAnimation();
view.setVisibility(View.GONE);
}

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

答案 1 :(得分:2)

你应该实现动画监听器,在onAnimationEnd()中你应该执行你的任务...希望下面的代码可以帮助你......

anim2.setAnimationListener(new Animation.AnimationListener(){
    @Override
    public void onAnimationStart(Animation arg0) {
    }           

    @Override
    public void onAnimationRepeat(Animation arg0) {
    }           

    @Override
    public void onAnimationEnd(Animation arg0) {
        againbtn.setVisibility(View.GONE);  //set your button visibility here
    }


});

答案 2 :(得分:0)

我认为在动画编码之前设置可见性按钮可能会起作用

 againbtn.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
//gone myselft (againbtn)
        againbtn.setVisibility(View.GONE);
        //answer button on animation
   Animation anim2 = AnimationUtils.loadAnimation(MainActivity.this,           R.anim.askbtnonanim);
         anim2.setFillAfter(true);
        askbtn.startAnimation(anim2);


    }
});

答案 3 :(得分:0)

在调用View.INVISIBLE之前对正在进行动画的视图调用clearAnimation(),或者GONE可以解决问题。

答案 4 :(得分:-1)

在动画结束时使用AnimationListener设置按钮可见性GONE

.....
anim2.setAnimationListener(animButnListener);
askbtn.startAnimation(anim2);
AnimationListener animButnListener = new AnimationListener(){
  @Override
  public void onAnimationEnd(Animation animation) {

   // make  Button Visibility GONE  here
    againbtn.setVisibility(View.GONE);
  }
  //.......other AnimationListener methods
};