Comment augmenter la hauteur de vue en utilisant Property Animations dans Android?
ObjectAnimator a = ObjectAnimator.ofFloat(viewToIncreaseHeight, "translationY", -100);
a.setInterpolator(new AccelerateDecelerateInterpolator());
a.setDuration(1000);
a.start();
La translationY déplace réellement la vue sans augmenter la hauteur. Comment puis-je augmenter la hauteur de la vue?
ValueAnimator anim = ValueAnimator.ofInt(viewToIncreaseHeight.getMeasuredHeight(), -100);
anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
int val = (Integer) valueAnimator.getAnimatedValue();
ViewGroup.LayoutParams layoutParams = viewToIncreaseHeight.getLayoutParams();
layoutParams.height = val;
viewToIncreaseHeight.setLayoutParams(layoutParams);
}
});
anim.setDuration(DURATION);
anim.start();
Vous pouvez utiliser ViewPropertyAnimator , ce qui peut vous faire économiser quelques lignes de code:
yourView.animate().scaleY(-100f).setInterpolator(new AccelerateDecelerateInterpolator()).setDuration(1000);
assurez-vous de vérifier la documentation et toutes les méthodes disponibles pour ViewPropertyAnimator .
Ce n'est pas une réponse directe à cette question. Cependant, cela peut aider quelqu'un.
Parfois, nous souhaitons augmenter/diminuer la hauteur de la vue car une partie de son enfant est en train d'être ajoutée/supprimée (ou devient tout simplement visible/disparue).
Dans ces cas, vous pouvez vraiment utiliser Android l'animation par défaut. Comme indiqué dans d'autres réponses, vous pouvez définir via:
<LinearLayout
...
Android:animateLayoutChanges="true"
.../>
Ou en Java:
linearLayout.setLayoutTransition(new LayoutTransition());
Si vous avez créé une vue personnalisée:
public StickerPickerView(final Context context, final AttributeSet attrs,
final int defStyleAttr) {
super(context, attrs, defStyleAttr);
setLayoutTransition(new LayoutTransition());
}
Pour moi, c'était assez satisfaisant mais je viens de tester les dernières API. Cela ajoutera automatiquement un fondu entrant/sortant lorsque votre vue deviendra visible. Il animera également la hauteur/largeur de votre vue lorsque les mêmes modifications (par exemple, lorsque vous modifiez la visibilité de l'une des vues enfants, etc.).
Donc, je recommande au moins d'essayer.