Ваши проблемы связаны с вашим местоположением . Я считаю, что когда анимация перемещается с абсолютными пикселями, это относительно себя. Итак, на второй анимации вы, по сути, переместили ее с x2 = 220 на x1 = 0, а y2 = 419 на y1 = 0. Таким образом, он двигался от (currentX + 220, currentY + 419) к (currentX +0, currentY +0), который = сам по себе
Чтобы решить , этот экземпляр просто отрицает и переключает значения второго объявления слайда следующим образом:
TranslateAnimation slide;
if(arg0 == img1)
{
//translate from img view 1 to img view 2
slide = new TranslateAnimation(Animation.ABSOLUTE,x1,Animation.ABSOLUTE, x2,Animation.ABSOLUTE, y1,Animation.ABSOLUTE,y2 );
}
else
{
// translate from img view 2 to img view 1
// slide = new TranslateAnimation(Animation.ABSOLUTE,x2,Animation.ABSOLUTE, x1,Animation.ABSOLUTE,y2,Animation.ABSOLUTE,y1);
slide = new TranslateAnimation(Animation.ABSOLUTE,0,Animation.ABSOLUTE, (-x2),Animation.ABSOLUTE,0,Animation.ABSOLUTE, (-y2));
}
Это происходит только потому, что ваш верхний левый спрайт имеет значение 0,0, хотя . Вы должны серьезно задуматься над тем, как вы перемещаете свои спрайты. Помните, что TranslateAnimation перемещает их относительно их текущих позиций, в основном устанавливает исходное местоположение спрайтов в (0,0).
Может быть неправильно, но надеюсь, что это поможет. У меня это сработало ...
Извините, что так долго возвращался к вам, я потерял ваше сообщение и по какой-то причине не смог найти его снова. Рад, что вы прокомментировали ранее!