Подтвердить что ты не робот

Переводить анимацию

Я хочу, чтобы изображение перемещалось горизонтально. Изображение должно перемещаться из нижнего левого края в правый нижний угол вправо. Не нужно возвращаться в левый конец нижнего угла.

Кусок кода, который я пробовал, был

<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator">

<translate android:fromXDelta="0%p" android:toXDelta="200%p" 
android:duration = "2000"/>
</set>

это перемещает изображение слева направо. Но он снова подходит к левой стороне. Может ли кто-нибудь сказать мне, как это решить?

4b9b3361

Ответ 1

Я получил... вместо того, чтобы использовать этот XML файл анимации, я написал внутри java файла.

Animation animation = new TranslateAnimation(0, 500,0, 0);
animation.setDuration(1000);
animation.setFillAfter(true);
myImage.startAnimation(animation);
myImage.setVisibility(0);

Теперь изображение перемещается слева направо, а затем оно становится невидимым... следовательно, анимированным!!!:)

Ответ 2

Вы стали жертвой большого недоразумения, которое каждый сначала делает о анимации Android: анимированный ImageView (или любой вид) фактически не перемещается (или масштабируется, не вращается или не исчезает). Это всего лишь трюк... анимация - это, по сути, несколько минутных инструкций для механизма компоновки экрана, чтобы компенсировать представление с помощью x/y, вращать на z и т.д. Представление, лежащее в основе позиции/размер/угол/альфа, никогда не изменяется.

Поэтому, когда анимация заканчивается, ваше изображение появляется, чтобы вернуться к исходной точке, потому что оно никогда не покидало его.

Тем не менее, вы можете достичь того, чего хотите простым способом, добавив android:fillAfter="true" к тегу <translate>. Просто имейте в виду, что изображение действительно не двигалось. Если вам нужно обновить макет в конце анимации, подключите AnimationListener и сделайте это в onAnimationEnd().

Ответ 3

Перевод Анимация может изменить визуальный внешний вид объекта, но они не могут изменять сами объекты. То есть, если вы примените анимацию перевода к представлению, она переместится в новую позицию, но события кликов не будут запущены; события щелчка по-прежнему будут срабатывать в предыдущей позиции.

Это происходит потому, что представление все еще находится в исходном положении. Чтобы преодолеть это, мы можем использовать ObjectAnimation, который фактически перемещает объект. Объектная анимация - единственная анимация, которая фактически перемещает объект.

Вы можете создать анимацию трансляции с помощью ObjectAnimator.

ObjectAnimator transAnimation= ObjectAnimator.ofFloat(view, propertyName, fromX, toX);
transAnimation.setDuration(3000);//set duration
transAnimation.start();//start animation

view - это представление, на которое должна применяться анимация propertyName - Анимация свойства. FromX, toX-A набор значений, которые анимация будет анимировать между со временем.