Android translate animation - навсегда переместить вид на новую позицию с помощью AnimationListener
У меня есть андроид перевод анимации. У меня есть ImageView со случайно сгенерированной позицией (next1, next2). Я звоню void каждые 3 секунды. Он генерирует новую позицию вида, затем создает анимацию и перемещает вид в позицию назначения. Перевести анимацию реализовал AnimationListener. Когда анимация заканчивается, я постоянно перемещаю View на новую позицию (в OnAnimationEnd). Моя проблема в том, что позиция анимации не соответствует настройке позиции layoutParams. Когда анимация заканчивается, происходит переход на новую позицию, расстояние которой составляет около 50-100 пикселей. Я думаю, что позиции должны быть одинаковыми, потому что я использую одинаковые значения (next1, next2) в обеих ситуациях. Пожалуйста, вы можете показать мне способ найти решение?
FrameLayout.LayoutParams pozice_motyl = (FrameLayout.LayoutParams) pozadi_motyl.getLayoutParams();
TranslateAnimation anim = new TranslateAnimation(Animation.ABSOLUTE,pozice_motyl.leftMargin, Animation.ABSOLUTE, next1, Animation.ABSOLUTE, pozice_motyl.topMargin, Animation.ABSOLUTE, next2);
anim.setDuration(1000);
anim.setFillAfter(true);
anim.setFillEnabled(true);
anim.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(100, 100);
layoutParams.leftMargin = (int)(next1);
layoutParams.topMargin = (int)(next2);
pozadi_motyl.setLayoutParams(layoutParams);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
pozadi_motyl.startAnimation(anim);
Вот макет XML: