est-il un moyen d'appliquer une animation à une propriété d'une vue? Actuellement, la seule animation dont je suis au courant consiste à appliquer une animation à une vue entière. Je me demande si je peux appliquer une animation à une propriété (par exemple layout_width)android animé propriété
1
A
Répondre
0
Même si vous souhaitez appliquer l'animation uniquement à une propriété de la vue, vous devez la définir comme animation de la vue.
<scale
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXScale="1.0"
android:toXScale="0" />
Cette animation modifie par exemple la largeur de votre vue.
Vous pouvez définir l'animation par
yourView.setAnimation(AnimationUtils.loadAnimation(this, R.anim.animation_name));
3
Vous pouvez modifier l'animation d'affecter uniquement certaines parties de la vue. Par exemple, je voulais un ViewFlipper
pour avoir l'air de retourner verticalement, j'ai donc fait en sorte que l'animation extérieure rétrécisse le y de la vue à 0 au milieu et l'animation en dedans augmente le y à partir du milieu. Voici à quoi ils ressemblent.
shrink_to_middle.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale
android:interpolator="@android:anim/linear_interpolator"
android:fromXScale="1.0"
android:toXScale="1.0"
android:fromYScale="1.0"
android:toYScale="0.0"
android:fillAfter="false"
android:duration="200" />
<translate
android:fromYDelta="0"
android:toYDelta="50%"
android:duration="200"/>
</set>
grow_from_middle.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale
android:interpolator="@android:anim/linear_interpolator"
android:fromXScale="1.0"
android:toXScale="1.0"
android:fromYScale="0.0"
android:toYScale="1.0"
android:fillAfter="false"
android:startOffset="200"
android:duration="200" />
<translate
android:fromYDelta="50%"
android:toYDelta="0"
android:startOffset="200"
android:duration="200"/>
</set>
oui, mais le problème est que cette échelles toute la vue. donc si la vue a un fond avec une bordure de 1 dip (par exemple), alors la bordure devient plus épaisse à mesure que l'animation joue. Je veux appliquer l'animation à la propriété, puis faire en sorte que le dessin XML puisse être redessiné afin que la bordure reste à 1 plongeon. – Ben
Vous pouvez utiliser un 9-Patch comme dessin pour l'arrière-plan et définir la bordure comme zone non étirable, de sorte que votre bordure reste fixe. – Mannaz
J'aime cette idée ... mais ... maintenant la question devient, y at-il un moyen de créer un 9patch via xml drawable ... :) – Ben