Как я могу анимировать представление в Android и оставить его в новой позиции/размере?

В настоящее время у меня есть представление в приложении для Android, и представление воспроизводит анимацию кадра. Я хочу оживить представление, чтобы увеличить его размер до 150%. Когда я применяю к нему масштабную анимацию, и анимация масштаба завершена, я хочу, чтобы представление оставалось в этом новом размере для остальной части жизненного цикла активности. К сожалению, сейчас, когда анимация масштабирования завершена, представление возвращается к исходному размеру. Как я могу заставить его сохранить новую анимированную tranformation?

Я использую

myView.startAnimation(AnimationUtils.loadAnimation(mContext,R.anim.scaleUp150));

Спасибо!

Ответ 1

Убедитесь, что вы добавили ниже атрибутов в корневой элемент в анимации xml:

android:fillAfter="true" 
android:fillEnabled="true"

Ответ 2

попробуйте создать анимацию из кода и установить свойства, подобные этому

anim.setFillEnabled(true);
anim.setFillAfter(true);

Ответ 3

если вы хотите поместить свою анимацию в xml, это может понадобиться, чтобы помочь:

<set
android:fillEnabled="true"
android:fillAfter="true"
xmlns:android="http://schemas.android.com/apk/res/android">

<translate
    android:fromYDelta="0"
    android:toYDelta="-20%p"
    android:duration="7000" />

</set>

fooobar.com/questions/73237/...

пожалуйста, также оцените другой ответ, помог мне:) удачи!

Ответ 4

В настоящее время стало очень легко:

view.animate().x(valueX).y(valueY).setDuration(500).start();

(В этом фрагменте используется ViewPropertyAnimator).

Можно добавить и несколько других параметров.

Вид будет расположен в новой позиции.

Ответ 5

EDIT: Qlimax ответ лучше, но поскольку OP не вернулся, чтобы изменить галочку, и я не могу удалить принятый ответ, я скопирую его здесь: просто установите fillAfter = true fillEnabled = true

Мой оригинальный ответ (который работает, но слегка смехотворный по сравнению):

Для того, чтобы работа работала так, как ожидалось после анимации, по крайней мере, согласно этот поток, вам нужно написать обработчик onAnimationEnd, и там, вручную отрегулируйте "реальные" (предварительные преобразования) границы вашего представления в соответствии с конечным результатом анимации масштаба.

Ответ 6

На самом деле, поскольку анимация, которую вы используете, кажется, встроена в рамки Android, я не уверен, что вы можете что-то изменить. Однако вы можете создать свою собственную анимацию, следуя пример в документации. И вам нужно будет поместить android: fillAfter = "true", если вы хотите, чтобы масштабирование сохранялось после окончания анимации.

Ответ 7

Поместите андроид: fillAfter = "true" в теге SET - как помещая их в тег анимации, ограничивает их "параметрами перехода" или "во время/во время анимации параметров". Параметры в SET будут применены к преобразованию, которое вы ищете после завершения анимации.