Comment charger animateur fichier xml sur Android par programmation?
Selon le site des développeurs Android, nous pouvons charger AnimatorSet
classe par programmation à partir du fichier xml situé sur le chemin comme ceci: res/animator/filename.xml
. J'ai donc créé un exemple de projet et essayé de voir si cela fonctionne réellement, et il n'en est rien; il ne se passe rien. Il serait très bien si je peux comprendre ce qui est manquant et/ou ce que j'ai fait de mal. Merci à l'avance! Ci-dessous est mon animateur fichier xml et le code Java permettant de charger le xml:
res/animator/sample.xml:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:ordering="sequentially"
>
<set>
<objectAnimator
android:propertyName="x"
android:duration="500"
android:valueTo="400"
android:valueType="intType"
/>
<objectAnimator
android:propertyName="y"
android:duration="500"
android:valueTo="300"
android:valueType="intType"
/>
</set>
<objectAnimator
android:propertyName="alpha"
android:duration="500"
android:valueTo="1f"
/>
</set>
Et voici mes codes Java pour charger le fichier xml ci-dessus:
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View view) {
//Load and start Animaton
AnimatorSet animSet =
(AnimatorSet) AnimatorInflater.loadAnimator(view.getContext(), R.animator.sample);
animSet.setTarget(view);
animSet.start();
}
});
OriginalL'auteur shoheikawano | 2015-11-16
Vous devez vous connecter pour publier un commentaire.
Vous set contient un autre Jeu
res/animator/sample.xml
. SimplifierVous gonflez le AnimatorSet comme ce
Jusqu'à présent, je n'ai pas trouvé un moyen de gonfler objectAnimator à partir de xml pour Java. J'ai l'envelopper à l'intérieur d'un Ensemble
pouvez-vous être plus explicite ?
pour éviter de jeter, vous pouvez utiliser Animateur au lieu de AnimatorSet.
OriginalL'auteur Raymond Chenon
C'est une erreur dans l'exemple donné dans la documentation.
D'essayer de changer le
android:valueType="intType"
àandroid:valueType="floatType"
.Il fonctionne en cas de @RaymondChenon comme il n'est pas explicitement la modification de la
android:valueType
àint
système est de prendre la valeur par défaut d'unfloat
Le problème ici est de vous donner
android:valueType="intType"
dans votre animateur qui est censé êtreandroid:valueType="floatType"
pour le bienandroid:propertyName="x"
animer.Au système d'exécution de chercher setter de la propriété, vous voulez animer.
Comme dans votre cas, il va chercher les
setX()
, mais aussi de la définition de type d'argument de typeint
il provoque un conflit qu'il n'y a pas une telle méthode, je ne sais pas pourquoi il ne veut pas conduire à un accident.Regarder les propriétés de Vue classe il y a une méthode setX(float)
Pour plus de compréhension, vous pouvez vous référer StackOverflow Question
OriginalL'auteur DeltaCap019