Ответ 1
Убедитесь, что вы добавили ниже атрибутов в корневой элемент в анимации xml:
android:fillAfter="true"
android:fillEnabled="true"
В настоящее время у меня есть представление в приложении для Android, и представление воспроизводит анимацию кадра. Я хочу оживить представление, чтобы увеличить его размер до 150%. Когда я применяю к нему масштабную анимацию, и анимация масштаба завершена, я хочу, чтобы представление оставалось в этом новом размере для остальной части жизненного цикла активности. К сожалению, сейчас, когда анимация масштабирования завершена, представление возвращается к исходному размеру. Как я могу заставить его сохранить новую анимированную tranformation?
Я использую
myView.startAnimation(AnimationUtils.loadAnimation(mContext,R.anim.scaleUp150));
Спасибо!
Убедитесь, что вы добавили ниже атрибутов в корневой элемент в анимации xml:
android:fillAfter="true"
android:fillEnabled="true"
попробуйте создать анимацию из кода и установить свойства, подобные этому
anim.setFillEnabled(true);
anim.setFillAfter(true);
если вы хотите поместить свою анимацию в 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/...
пожалуйста, также оцените другой ответ, помог мне:) удачи!
В настоящее время стало очень легко:
view.animate().x(valueX).y(valueY).setDuration(500).start();
(В этом фрагменте используется ViewPropertyAnimator).
Можно добавить и несколько других параметров.
Вид будет расположен в новой позиции.
EDIT: Qlimax ответ лучше, но поскольку OP не вернулся, чтобы изменить галочку, и я не могу удалить принятый ответ, я скопирую его здесь: просто установите fillAfter = true fillEnabled = true
Мой оригинальный ответ (который работает, но слегка смехотворный по сравнению):
Для того, чтобы работа работала так, как ожидалось после анимации, по крайней мере, согласно этот поток, вам нужно написать обработчик onAnimationEnd
, и там, вручную отрегулируйте "реальные" (предварительные преобразования) границы вашего представления в соответствии с конечным результатом анимации масштаба.
На самом деле, поскольку анимация, которую вы используете, кажется, встроена в рамки Android, я не уверен, что вы можете что-то изменить. Однако вы можете создать свою собственную анимацию, следуя пример в документации. И вам нужно будет поместить android: fillAfter = "true", если вы хотите, чтобы масштабирование сохранялось после окончания анимации.
Поместите андроид: fillAfter = "true" в теге SET - как помещая их в тег анимации, ограничивает их "параметрами перехода" или "во время/во время анимации параметров". Параметры в SET будут применены к преобразованию, которое вы ищете после завершения анимации.