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   翻滚的咸鱼  阅读(86)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 本地部署 DeepSeek:小白也能轻松搞定!
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 从 Windows Forms 到微服务的经验教训
· 李飞飞的50美金比肩DeepSeek把CEO忽悠瘸了,倒霉的却是程序员
· 超详细,DeepSeek 接入PyCharm实现AI编程!(支持本地部署DeepSeek及官方Dee
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

点击右上角即可分享
微信分享提示