Как я могу анимировать представление в Android и сохранить его в новом положении / размере? - PullRequest
80 голосов
/ 27 июля 2010

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

Я использую

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

Спасибо!

Ответы [ 7 ]

148 голосов
/ 11 августа 2010

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

android:fillAfter="true" 
android:fillEnabled="true"
52 голосов
/ 04 мая 2011

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

anim.setFillEnabled(true);
anim.setFillAfter(true);
30 голосов
/ 13 августа 2012

Если вы хотите поместить свою анимацию в 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>

https://stackoverflow.com/a/6519233/371749

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

19 голосов
/ 28 июня 2015

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

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

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

Существует возможность добавить несколько других опций.

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

2 голосов
/ 27 июля 2010

РЕДАКТИРОВАТЬ: ответ Qlimax лучше, но, поскольку OP не вернулся, чтобы изменить флажок, и я не могу удалить принятый ответ, я скопирую его здесь: просто установите fillAfter = true fillEnabled = true

Мой первоначальный ответ (который работает, но слегка нелепо для сравнения) следующий:

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

1 голос
/ 10 марта 2013

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

1 голос
/ 27 июля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...