Я бы предложил использовать ViewPropertyAnimator .
Из документов:
Этот класс включает автоматическую c и оптимизированную анимацию выбранных свойств в объектах просмотра. , Если анимируется только одно или два свойства объекта View, тогда использование ObjectAnimator - это нормально; установщики свойств, вызываемые ObjectAnimator, хорошо оснащены для правильной установки свойства и аннулирования представления соответствующим образом. Но если несколько свойств анимируются одновременно или если вы просто хотите, чтобы более удобный синтаксис анимировал указанное свойство c, то ViewPropertyAnimator может лучше подходить для этой задачи.
Этот класс может обеспечить более высокую производительность для нескольких одновременных анимаций, потому что это оптимизирует недействительные вызовы, которые будут выполняться только один раз для нескольких свойств вместо каждого анимированного свойства, независимо вызывая его собственную аннулирование. Кроме того, синтаксис использования этого класса может быть проще в использовании, потому что вызывающей стороне нужно только указать объекту View, какое свойство анимировать, и значение, чтобы анимировать, либо, либо путем, и этот класс обрабатывает детали настройки базового класса Animator и запуская его.
Вы можете объединить столько анимаций, сколько хотите, в одну строку кода:
view.animate().translationX(...).translationY(...).scaleX(...).scaleY(...).setInterpolator(new AccelerateDecelerateInterpolator()).setDuration(2500);
, если вам нужны разные значения длительности или аналогичные, вы это можно сделать двумя строками:
view.animate().translationX().setDuration(...) ...
view.animate().scaleX().setDuration(...) ...
Существуют также методы translationXBy () и scaleXBy (), которые могут быть более подходящими для вашего случая, и вы также можете установить прослушиватель et c. Проверьте документы для всех доступных методов