Итак, у меня есть ImageView в моем макете, и я хотел сдвинуть его вправо или влево, когда пользователь проводит пальцем по последнему. Я использовал TranslateAnimation для перевода ImageView, как показано ниже.
ImageView logoFocus = (ImageView) findViewById(R.id.logoFocus);
Animation animSurprise2Movement = new TranslateAnimation(logoFocus.getLeft(), logoFocus.getLeft()+150, logoFocus.getTop(), logoFocus.getTop());
animSurprise2Movement.setDuration(1000);
animSurprise2Movement.setFillAfter(true);
animSurprise2Movement.setFillEnabled(true);
logoFocus.startAnimation(animSurprise2Movement);
Я поместил этот код в раздел «Проведите пальцем вправо» и тот же код, но с использованием getLeft()-150 для раздела «Проведите пальцем влево». Это работает, как и ожидалось, когда я прокручиваю в первый раз, но когда я прокручиваю в другом направлении, ImageView возвращается в исходное положение, а затем скользит в другом направлении, а не только скользит в исходное положение.
Я уже пытался добавить следующее в метод onAnimationEnd AnimationListener, который я установил для анимации, но тщетно.
MarginLayoutParams params = (MarginLayoutParams) logoFocus.getLayoutParams();
params.setMargins(logoFocus.getLeft()+150, logoFocus.getTop(), logoFocus.getRight(), logoFocus.getBottom());
logoFocus.setLayoutParams(params);
Я также пробовал следующее в том же методе, но это не сработало, как ожидалось.
((RelativeLayout.LayoutParams) logoFocus.getLayoutParams()).leftMargin += 150;
logoFocus.requestLayout();
Кто-нибудь, пожалуйста, помогите мне? Похоже, что позиция не меняется после анимации, даже при использовании setFillAfter(true) и setFillEnabled(true). Есть ли альтернатива использованию TranslateAnimation?
Спасибо за любую помощь, которую я могу получить. :)