Переводить анимацию
Я хочу, чтобы изображение перемещалось горизонтально.
Изображение должно перемещаться из нижнего левого края в правый нижний угол вправо.
Не нужно возвращаться в левый конец нижнего угла.
Кусок кода, который я пробовал, был
<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>
это перемещает изображение слева направо. Но он снова подходит к левой стороне.
Может ли кто-нибудь сказать мне, как это решить?
Ответы
Ответ 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 набор значений, которые анимация будет анимировать между со временем.