前言
最近在看flutter,本来想写一篇flutter相关的内容,仔细想想又觉得内容太多,等年后回来再写一个系列吧,今天我们聊一点简单的。
最近公司发布了新版本的UI,其中一个效果是模仿陌陌的:
![0debd253982e87a6ad69eb6d8f0decc0.gif](https://img-blog.csdnimg.cn/img_convert/0debd253982e87a6ad69eb6d8f0decc0.gif)
首先我们简单分析一下效果:
- 被选中的 Tab文字大,其他Tab文字小
- 被选中的字体加粗
其他的效果就先忽略了,因为我一直使用的是FlycoTabLayout这个框架,动画效果已经满足了,唯一欠缺的就是这个文字大小切换的效果。
FlycoTabLayout框架: https://github.com/H07000223/FlycoTabLayout
有了之前的分析,我们开始做准备工作:
效果1:随着ViewPager的滑动,文字大小也随之变化
这个效果非常简单,ViewPager自带Transform监听:
/** * Created by li.zhipeng on 2019/1/3. *
* tab文字大小切换的动画类 */public class TabScaleTransformer implements ViewPager.PageTransformer { private SlidingScaleTabLayout slidingScaleTabLayout; private PagerAdapter pagerAdapter; private List transformers = null; public TabScaleTransformer(SlidingScaleTabLayout slidingScaleTabLayout, PagerAdapter pagerAdapter) { this.slidingScaleTabLayout = slidingScaleTabLayout; this.pagerAdapter = pagerAdapter; } @Override public void transformPage(@NonNull View view, final float position) { // position的值区间[-1 ,1] // [-1,