2015-02-11 2 views
2

Нажатие кнопки Я хотел бы сделать перемещение изображения вниз или вправо. Проблема, с которой я сталкиваюсь, заключается в том, что перемещение изображения происходит только один раз. В методе onClick() я просто вызываю один из моих методов перемещения. Вот методы перемещения.Как заставить анимацию снова работать после завершения?

private void moveLeftToRight() { 
    animation = new TranslateAnimation(0.0f, 200.0f, 0.0f, 0.0f); 
    animation.setDuration(1500); // animation duration 
    animation.setFillAfter(true); 
    iv1.startAnimation(animation); // start animation 
} 

private void moveUpToDown() { 
    animation = new TranslateAnimation(0.0f, 0.0f, 0.0f, 200.0f); 
    animation.setDuration(1500); // animation duration 
    animation.setFillAfter(true); 
    iv1.startAnimation(animation); // start animation 
} 

Я могу позвонить в одно из этих случаев впервые. После этого методы анимации не работают. Мне интересно, нужно ли мне сбросить или что-то еще. Есть идеи? Заранее спасибо.

+1

Переданы ли координаты 'TranslateAnimation()' relative или нет? Если это не так, то почему. – MeetTitan

+0

Они не относительны. Я просто экспериментирую с перемещением изображения вокруг экрана. Поэтому я просто перемещаю 200 пикселей вниз или вправо. Это проблема? Кажется, я понимаю, что вы говорите. Чтобы изображение продолжалось с того места, где оно было перемещено, я должен установить некоторые координаты, которые отображают текущую позицию изображения, чтобы он мог перемещаться снова. Верный? – portfoliobuilder

+1

Я подозреваю, что в 'moveLeftToRight()' вы переходите к координатам {0, 200, 0, 0} (относительно {0,0}, а не к виду), что означает, что последовательные вызовы оживят представление к тому же самому пятну (таким образом, не двигаясь). Чтобы исправить это, получите координаты вида и добавьте свои значения, а затем передайте их на 'TranslateAnimation' – MeetTitan

ответ

2

Когда вы передаете свои координаты TranslateAnimation, эти координаты относительно 0,0, а не координаты видов.

Чтобы исправить это, мы получим точку координат с view.bottom, view.left и т.д.

Затем добавьте значения, которые нужно преобразовать по тем значениям, передавать их в TranslateAnimation, и ваш перевод будет работать, как и ожидалось ,

+0

Да! Это работало как прелесть. Спасибо! – portfoliobuilder

+0

@portfoliobuilder, мое удовольствие и счастливое кодирование. – MeetTitan

Смежные вопросы