Я хочу нажать 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);
}
}
});
используйте это перед 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);
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);
}
});
Вы должны использовать 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);
}
});
У меня есть одно предложение для вас, чтобы использовать YOYO Animation lib для Android. Он предоставляет различные анимации вместе с методами обратного вызова, так что вы можете скрыть свое текстовое представление после завершения анимации при обратном вызове.
У меня тоже есть такая же проблема. Пожалуйста, следуйте ниже строк:
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);
Если работает, пожалуйста, примите ответ.
onAnimationEnd
если вы не установите его в null