Comment utiliser StateListAnimator?

docs:

la nouvelle classe StateListAnimator vous permet de définir les animateurs qui tournent lorsque l'état d'un point de vue change. L'exemple suivant montre comment définissez StateListAnimator comme une ressource XML:

<!-- 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>

Toutefois, il ne dit rien sur la façon de réellement utiliser ce fichier xml. Il ne semble pas y avoir de méthode sur le Resources classe pour obtenir un StateListAnimator et StateListAnimator la classe ne fournit aucune information soit.

Comment pouvons-nous l'utiliser?

17
demandé sur nhaarman 2014-06-27 22:27:56

2 réponses

Android L xml attribut a été ajouté pour View:

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

en plus pour instantiating StateListAnimator objet par programme une nouvelle méthode :

loadStateListAnimator(Context context, int id)

a été ajouté à AnimatorInflater .

ceux-ci peuvent être trouvés sur Android L developper preview documentation package.

22
répondu harism 2014-06-27 19:03:24

j'utilise ce code en java et fonctionne très bien

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
            crd.setStateListAnimator(AnimatorInflater.loadStateListAnimator(ctx,
                    R.drawable.card_smooth_shadow));
}
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
    <set>
        <objectAnimator android:propertyName="translationZ"
            android:duration="@android:integer/config_shortAnimTime"
            android:valueTo="10dp"
            android:valueType="floatType"/>
    </set>
</item>
<item
    android:state_pressed="false">
    <set>
        <objectAnimator android:propertyName="translationZ"
            android:duration="100"
            android:valueTo="2dp"
            android:valueType="floatType"/>
    </set>
</item>

0
répondu Radesh 2018-09-26 12:24:34