Я перемещаю горизонтальную кнопку влево (относительная компоновка). После воспроизведения анимации перевода (onAnimationEnd) я установил параметры макета, чтобы удалить правило CENTER_HORIZONTAL. Теперь есть две возможности:Как переместить кнопку после перевода анимации?
1) Если я установил fillAfter (true), кнопка воспроизводит анимацию, затем выключается экран на половину;
2) Если я установил fillAfter (false), кнопка воспроизводит анимацию (поэтому она попадает влево), затем она мигает в течение миллисекунды. Это потому, что он возвращается в исходное положение, пока я не вызову setLayoutParams, и он правильно устанавливается слева. Но он вспыхивает, и это не приятно.
Как я могу избежать вспышки?
Код
TranslateAnimation translateAnimation = new TranslateAnimation(0, LEFT_TRANSLATION, 0, 0);
translateAnimation.setDuration(1000);
translateAnimation.setFillAfter(true);
button1.startAnimation(translateAnimation);
translateAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) button1.getLayoutParams();
lp.removeRule(RelativeLayout.CENTER_HORIZONTAL);
button1.setLayoutParams(lp);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});