Fragment翻蓋動效

翻滚的咸鱼發表於2024-04-29

fragment切換動效,基本都是 viewpager+Transformer,但是總有它實現不了的動效,比如從0到3直接過渡,並且過渡需要加上兩者的位移效果

慢動作看到,如果是viewpager,從0到3過程是無法直達的,會有0,1,2,3的過渡效果,並且動畫時機是不可控的

當然,有個自定義方式可以控制速度,也是藉助了 ValueAnimator 才行

不多說,因為意義不大,依然解決不了挨個跳轉的問題

只能拋棄viewpager,使用原始的 FragmentManager 進行跳轉,並且在跳轉時加入自定義動畫

如圖,假設0切換到3,那麼0頁面不動,3頁面會從右邊蓋上來,並且從五分之一的位置開始平移過去

以上是極端操作,正常動畫速度是500毫秒,如果中途強制中斷跳轉需要額外處理

實現流程

1、新建TabPageTransformerUtils,初始化fragment事務,顯示預設的tab

2、自定義動畫,對fragment的root容器進行過渡處理,執行動畫前對翻蓋tab頁預處理(平移五分之一)

3、動畫結束時恢復屬性

基本動畫實現,此時fragment切換,0-3,0頁面不動,3頁面翻蓋過來

還能加上一行程式碼,讓0也具備平移動效,這樣兩者之間可以實現同步位移效果

需要注意的是,因為屬性動畫變更了view的屬性,所以stop結束後必須恢復,否則會有兩個頁面重疊的問題

相關文章