web-dev-qa-db-fra.com

Animation des sélecteurs / transitions d'état

J'ai un simple sélecteur pour ma ListView

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">

    <item Android:drawable="@drawable/yellow_arc" Android:state_activated="true"/>
    <item Android:drawable="@drawable/yellow_nonarc" Android:state_activated="false"/>

</selector>

Je veux animer la transition entre ces drawables lorsque l'état des vues passe de activé à non activé et vice versa.

Si vous exécutez exemple dans les démos de l'API, vous verrez une animation évidente de fondu d'entrée/de sortie tandis que l'état activé de la vue est modifié.

Donc, ce que je veux, c'est une animation personnalisée pendant que l'état de la vue est modifié. Je pense que cela devrait être fait via xml mais je n'ai pas trouvé de moyen.

Merci d'avance.

MODIFIER:

Je suppose que j'ai trouvé quelque chose d'utile, il y a activated_background.xml dans \Android\android-sdk\platforms\Android-API_VERSION\data\res\drawable qui inclut

<selector xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:exitFadeDuration="@Android:integer/config_mediumAnimTime">
    <item Android:state_activated="true" Android:drawable="@Android:drawable/list_selector_background_selected" />
    <item Android:drawable="@color/transparent" />
</selector>

Ainsi, l'exemple dans les démonstrations d'API réalisant cette animation de fondu en déclarant un exitFadeDuration. Cependant, ce n'est pas exactement ce que je veux .. Je veux déclarer des animations personnalisées pour la transition entre les drawables d'état puisque l'animation de fondu d'entrée/de sortie ne semble pas bonne pour mes drawables.

37
C.d.

Ajouté dans l'api 21 "StateListAnimator"

http://developer.Android.com/reference/Android/animation/StateListAnimator.html

Je sais que c'est une vieille question, mais cela pourrait aider les futures personnes qui cherchent à le faire.

6
Larry McKenzie

Je suppose que TransitionDrawable pourrait vous aider à accomplir cela.

Vous pouvez vérifier la réponse ici: Animer le changement de couleur d'arrière-plan de la vue sur Android

3
HatemTmi

Est-ce le fondu que vous voulez?

Je suppose que ce serait la même chose que la façon dont un textSwitcher fonctionne, peut-être que vous voulez le changer en un ViewSwitcher à la place, le fondu se fait de manière programmatique


Animation in = AnimationUtils.loadAnimation(this,
                Android.R.anim.fade_in);
        Animation out = AnimationUtils.loadAnimation(this,
                Android.R.anim.fade_out);

        mSwitcher1.setInAnimation(in);
        mSwitcher1.setOutAnimation(out); 

0
FabianCook