Animation.setFillAfter / Before – Travaillent-ils / À quoi servent-ils?

Comme dans le titre de ma question, quelles sont les méthodes setFillBefore() et setFillAfter() à faire?

J’espérais que setFillAfter() rendrait la modification à la vue permanente une fois l’animation terminée, mais cela est incorrect?

La réponse est oui, ils fonctionnent, probablement pas pour ce que vous attendez – par exemple, la description de setFillAfter(boolean fillAfter) indique

Si fillAfter est vrai, la transformation effectuée par cette animation persistera à la fin.

et lorsqu’il est défini sur true, il le fait.

Cependant, une animation sur Android n’anime pas la vue elle-même, mais elle anime une représentation bitmap de la vue.

Le problème que vous avez probablement est que, après une animation, la vue redevient comme avant l’animation – setFillAfter et setFillBefore ne peuvent pas vous aider car, dans cette situation, vous voulez vraiment définir les propriétés de View. être identique à la représentation animée (ce sont des éléments distincts), et setFillAfter et setFillBefore s’appliquent uniquement aux propriétés d’animation, pas aux propriétés d’ setFillBefore .

La raison pour laquelle ils existent est pour les animations de chaînage. Supposons que vous ayez une animation de traduction suivie d’un fondu. Si vous n’avez pas défini setFillAfter(true) sur l’animation de traduction, la vue se traduirait, reviendrait à sa position d’origine et disparaîtrait. Avec setFillAfter(true) défini sur l’animation de traduction, la vue se déplace et disparaît à son emplacement actuel.