I have a problem. I want to animate the background color of a LinearLayout
, using ObjectAnimator
.
The problem is that it anima
It seems to be an old issue. I stumbled on this question while having a similar problem.
At the end it was just a bug in Android. The code is supposed to work, but the AnimatorInflater just blunders when setting the evaluator.
So setting the TypeEvaluator
after the inflation again would do the trick.
ObjectAnimator objAnim = (ObjectAnimator)AnimatorInflater.loadAnimator(getActivity(), R.animator.animator_bkg);
objAnim.setTarget(view);
objAnim.setEvaluator(new ArgbEvaluator());
objAnim.start();
Set to new ArgbEvaluator()
the animation works like intended.
I googled a bit. There is an answer. Try to use TransitionDrawable. http://developer.android.com/guide/topics/resources/drawable-resource.html#Transition
Also, there is a topic somewhere on stackoverflow.com dedicated to the same problem.
ADDED Code example:
Button btn = (Button)this.findViewById(R.id.btn1);
//Let's change background's color from blue to red.
ColorDrawable[] color = {new ColorDrawable(Color.BLUE), new ColorDrawable(Color.RED)};
TransitionDrawable trans = new TransitionDrawable(color);
//This will work also on old devices. The latest API says you have to use setBackground instead.
btn.setBackgroundDrawable(trans);
trans.startTransition(5000);