Tuesday, April 3, 2012

Animate change of view background color in Android


How do you animate the change of background color of a view in Android?



For example:



I have a view with a red background color. The background color of the view changes to blue. How can I do a smooth transition between colors?



If this can't be done with views, an alternative will be welcome.

1 comment:

  1. I ended up figuring out a (pretty good) solution for this problem!

    You can use a TransitionDrawable to accomplish this. For example, in an xml file in the drawable folder you could write something like:

    <?xml version="1.0" encoding="UTF-8"?>
    <transition xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- The drawables used here can be solid colors, gradients, shapes, images, etc. -->
    <item android:drawable="@drawable/original_state" />
    <item android:drawable="@drawable/new_state" />
    </transition>


    Then, in your xml for the actual View you would reference this TransitionDrawable in the android:background attribute.

    At this point you can initiate the transition in your code on-command by doing:

    TransitionDrawable transition = (TransitionDrawable) viewObj.getBackground();
    transition.startTransition(transitionTime);


    Or run the transition in reverse by calling:

    transition.reverseTransition(transitionTime);


    I hope this helps you solve your problem!

    ReplyDelete