Search code examples
androidandroid-5.0-lollipop

How to use StateListAnimator?


From the docs:

The new StateListAnimator class lets you define animators that run when the state of a view changes. The following example shows how to define an StateListAnimator as an XML resource:

<!-- animate the translationZ property of a view when pressed --> <selector xmlns:android="http://schemas.android.com/apk/res/android">  
  <item android:state_pressed="true">
    <set>
      <objectAnimator android:propertyName="translationZ"
        android:duration="100"
        android:valueTo="2"
        android:valueType="floatType"/>
        <!-- you could have other objectAnimator elements
             here for "x" and "y", or other properties -->
    </set>   
  </item>   
  <item android:state_enabled="true"
    android:state_pressed="false"
    android:state_focused="true">
    <set>
      <objectAnimator android:propertyName="translationZ"
        android:duration="100"
        android:valueTo="2"
        android:valueType="floatType"/>
    </set> 
  </item> 
</selector>

However, it says nothing about how to actually use this xml file. There seems to be no method on the Resources class to get a StateListAnimator, and the StateListAnimator class does not provide any info either.

How can we use this?


Solution

  • In Android L a new xml attribute has been added for View :

    android:stateListAnimator   : Sets the state-based animator for the View.
    

    Additionally for instantiating StateListAnimator object programmatically a new method :

    loadStateListAnimator(Context context, int id)
    

    has been added to AnimatorInflater .

    These can be found on Android L developer preview documentation package.