Как скрыть просмотр текста после анимации

1

Я хочу нажать Button которая покажет TextView видимым (выполнить анимацию слайда), а затем снова нажать кнопку, чтобы выполнить другую анимацию (слайд). после этого не нужно показывать TextView.
Как мне это исправить?
пожалуйста, у кого-нибудь есть ответ, чтобы помочь мне.

bclickss.setOnClickListener(new View.OnClickListener() {
        boolean visible;
        @Override
        public void onClick(View v) {
            if( visible = !visible) {
            tv2.setVisibility(visible ? View.VISIBLE : View.GONE);
            Animation anim = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.slide_down);
            tv2.startAnimation(anim);
                }
            else {
                Animation anim = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.slide_up);
                tv2.startAnimation(anim);
                tv2.setVisibility(View.GONE);
            }
            }
    });
Теги:

5 ответов

1

используйте это перед startAnimation

if (tv2.animation != null) tv2.animation.setAnimationListener(null)//needed not in all cases
tv2.clearAnimation()

anim.setAnimationListener(new Animation.AnimationListener() {
    @Override
    public void onAnimationStart(Animation animation) {
        tv2.setVisibility(View.VISIBLE);
    }
    @Override
    public void onAnimationEnd(Animation animation) {
      tv2.setVisibility(View.GONE);
    }
    @Override
    public void onAnimationRepeat(Animation animation) {}
  });
  tv2.startAnimation(anim);

Во второй анимации вам нужно что-то вроде этого:

if (tv2.animation != null) tv2.animation.setAnimationListener(null)//needed not in all cases
tv2.clearAnimation()

anim.setAnimationListener(new Animation.AnimationListener() {
    @Override
    public void onAnimationStart(Animation animation) {
      tv2.setVisibility(View.VISIBLE);
    }
    @Override
    public void onAnimationEnd(Animation animation) {
    }
    @Override
    public void onAnimationRepeat(Animation animation) {}
  });
  tv2.startAnimation(anim);
  • 0
    Вам нужно показать вид на начало анимации, обновленный ответ.
  • 0
    обновленный ответ, вам нужно очистить анимацию и удалить предыдущий AnimationListener, потому что он будет выполнять onAnimationEnd если вы не установите его в null
Показать ещё 2 комментария
0
try this:
   //You can add Animation listener to your animation object like

    anim .setAnimationListener(new Animation.AnimationListener(){
        @Override
        public void onAnimationStart(Animation arg0) {
        }
        @Override
        public void onAnimationRepeat(Animation arg0) {
        }
        @Override
        public void onAnimationEnd(Animation arg0) {

     tv2.setVisibility(View.GONE);

        }
    });
0

Вы должны использовать clearAnimation перед установкой видимости View.GONE

anim .setAnimationListener(new Animation.AnimationListener(){
    @Override
    public void onAnimationStart(Animation arg0) {
    }
    @Override
    public void onAnimationRepeat(Animation arg0) {
    }
    @Override
    public void onAnimationEnd(Animation arg0) {
         tv2.clearAnimation();
         tv2.setVisibility(View.GONE);

    }
});
0

У меня есть одно предложение для вас, чтобы использовать YOYO Animation lib для Android. Он предоставляет различные анимации вместе с методами обратного вызова, так что вы можете скрыть свое текстовое представление после завершения анимации при обратном вызове.

проверьте здесь

-1

У меня тоже есть такая же проблема. Пожалуйста, следуйте ниже строк:

Animation slide_up = AnimationUtils.loadAnimation(this, R.anim.slide_up);
Animation slide_down = AnimationUtils.loadAnimation(this, R.anim.slide_down);

чтобы сделать видимость видимой:

 view.setVisibility(View.VISIBLE);
 view.startAnimation(slide_down);

для сокрытия этого:

view.startAnimation(slide_up);
view.setVisibility(View.GONE);

Если работает, пожалуйста, примите ответ.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню