Collectives™ on Stack Overflow
Find centralized, trusted content and collaborate around the technologies you use most.
Learn more about Collectives
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
Learn more about Teams
Ask Question
I am using
animators (ObjectAnimator)
to animate few properties
(scale, rotate)
of a view.
Target view
is animating properly when ObjectAnimators are set to it.
But there is an added requirement to get view to the
original position
(reset)
after a while.
I tried to
cancel()
the animator but it only cancels the animation and doesn't reset the view.
Possible solution :
creating another animator that does just opposite of the initial animator.
Is there any other way to reset it ?
–
–
See the solution I came up with as I had a similar issue with animations inside views in a recycler view, so I had to find a way to reset them:
Trying to reset values from Property Animator to be used in recycler view
Good news in Android O these will be better supported
I met the same problem, because I animate the view use
ViewPropertyAnimator
,
addView()
and
removeView()
again and again for not creating new view, but a view can be shown once, when you remove the view, you call
addview()
again, it is no show, but you see the property visibility is visible and
animationListener
also be called. it is strange.
I had the Same problem with my views . so I came over this problem with this trick .
So We assume we have a view that applying an animate after clicking on it .
viewLayout.arrow_back.setOnClickListener {arrow ->
arrow.animate().rotationXBy(50F) // this is a just simple anim not so usefull
.start()
arrow.isEnabled = false
I hope it'll Help someone .
Both
ObjectAnimator.cancel()
and
ObjectAnimator.end()
don't cancel the effects the animation had on the animated object, but rather just cancel its execution at the point in which the methods were called (see
ValueAnimator's documentation
for more details).
Now, I can think of three main ways to accomplish what you wanted:
Put a listener on the
ObjectAnimator
, and when
OnAnimationEnd
/
OnAnimationCancel
is called, manully reset the properties of the view.
If the properties of the view you want to reset are those given to it in the XML file, you can re-inflate it. For more details, check out
this answer
.
Use the
ObjectAnimator.reverse()
method to reverse the execution of the animation, effectively reseting the properties of the view. Preferably, you would want to call start the reverse when the animation ends, so you'd probably need to put a listener on the animator and check when
OnAnimationEnd
with the animtor to reverse is called.
Do you mean stop a running animation? If so, call
clearAnimation()
to remove animations from the views that you called
startAnimation();
If what you mean is to reset the view to its original appearance after the animation is over, always
setFillAfter(false);
to the animations.
–
–
Thanks for contributing an answer to Stack Overflow!
-
Please be sure to
answer the question
. Provide details and share your research!
But
avoid
…
-
Asking for help, clarification, or responding to other answers.
-
Making statements based on opinion; back them up with references or personal experience.
To learn more, see our
tips on writing great answers
.