Android Animation的fillBefore fillAfter 以及fillEnable

這三個變量極易產生誤解 這是Animation設計有問題的地方佈局

爲了能正常使用 須要仔細區分這三個變量動畫

 

首先fillAfter是決定 動畫結束以後 view最終的顯示位置是否是動畫的結束位置。須要注意的是fillEnable的值跟它徹底無關。設計

代碼在viewgroup的 get

void finishAnimatingView(final View view, Animation animation)
if (animation != null && !animation.getFillAfter()) {
view.clearAnimation();
}


fileEnable參與決定在動畫開始以前 view的位置 是否是動畫起始位置(由於動畫的開始位置可能離view的佈局位置有必定誤差)。 能夠使用setAnimation來提早設置 在動畫開始以前的animation顯示若是fillEnable爲true,動畫可能不會當即開始(考慮到animation可能設置delay),不過若是同時設置了fillBefore爲true,那麼此刻view的顯示位置就變爲動畫的開始位置。(動畫會當即開始(start的監聽回調被調用)若是fillBefore爲false,一切照舊等待動畫開始時動畫運行(start的監聽回調在動畫開始時調用)。若是fillEnable爲false,無論動畫有沒有延遲,動畫都會馬上開始.此時fillBefore變量無用,view可能會在動畫開始位置停留一段時間,而後動畫正式運行。總而言之,若是你沒有爲animation設置delay。fillEnable和fillBefore你無需關心,若是你設置了delay爲1000ms,那麼若是你想在這1000ms期間view保持在原始位置(非動畫開始位置),就設置fillEnable=true && fillBefore=false【必須設置】,不然view的動畫會在馬上開始。
相關文章
相關標籤/搜索