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结束后必须恢复,否则会有两个页面重叠的问题

 

posted on 2024-04-29 14:30  翻滚的咸鱼  阅读(78)  评论(0编辑  收藏  举报