Animation.setFillAfter / Before - они работают / для чего они? - PullRequest
45 голосов
/ 04 мая 2011

Как и в заголовке моего вопроса, какие методы setFillBefore() и setFillAfter() должны делать?

Я надеялся, что setFillAfter() внесет изменение в постоянный вид после завершения анимации, но это неверно?

1 Ответ

119 голосов
/ 04 мая 2011

Ответ - да, они работают, просто, вероятно, не для того, что вы ожидаете - например, описание для setFillAfter(boolean fillAfter) говорит

Если fillAfter имеет значение true, преобразование, что эта анимация выполнено будет сохраняться, когда это завершено.

и при значении true он делает это.

Тем не менее, неинтуитивно анимация на Android фактически не анимирует само представление, а анимирует растровое представление представления.

Проблема, с которой вы, вероятно, столкнулись, заключается в том, что после анимации представление возвращается к тому, что было до анимации - setFillAfter и setFillBefore не могут вам в этом помочь, потому что в этой ситуации вы действительно хотите сделать Устанавливает свойства вида как анимированное представление (это отдельные вещи), и setFillAfter и setFillBefore применяются только к свойствам анимации, но не к свойствам вида.

Причина, по которой они существуют, заключается в создании цепочек анимации. Предположим, у вас была анимация перевода и затем исчезновение. Если вы не установили setFillAfter(true) для анимации перевода, то представление переместится, вернется в исходное положение и затем исчезнет. С setFillAfter(true), установленным для анимации перевода, вид будет двигаться, а затем исчезать в текущей точке.

...