Invisibility and GONE doesnt work after animation in android

守給你的承諾、 提交于 2020-01-17 18:20:47

问题


i use this code to when i click on a imagebox, run an animation on another object and dissaper itself via visibility.GONE. but it doesnt work!! here is my code:

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);
        }
    });

if a delete 3 animation line from this code, everything is OK and works, but now it doesn't. but why? it's related to anim2.setFillAfter(true); ??? i put this because my animation run one time and dont reset! please help me


回答1:


You should implement Animation Listener and in onAnimationEnd() you should perform your task... hope below code will help you...

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:


Try this You have to clear the view animation then you can 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) {}
            });



回答3:


I think put visibility button before animation coding the this might work

 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);


    }
});



回答4:


Calling clearAnimation() on the view that is doing the animation before calling View.INVISIBLE, or GONE does the trick.




回答5:


use AnimationListener for setting Button Visibility GONE when Animation end.

.....
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
};


来源:https://stackoverflow.com/questions/15697880/invisibility-and-gone-doesnt-work-after-animation-in-android

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!