Android仿微博主页个人信息界面
前言
之前在网上找了一下微博主页的轮子,发现没找到合适的,多多少少有一些问题,所以决定自己写一个。
话不多说,先上个效果图:
gif好像不太清晰,再贴两张图
使用
要实现这个功能用到了CoordinatorLayout、AppBarLayout、CollapsingToolbarLayout的使用,用到这些,自然需要依赖
design包,关于这些控件的介绍,大家可以看 Material design library系列。
这个Demo使用到了
compile'com.gyf.barlibrary:barlibrary:2.3.0' //状态栏
compile'com.scwang.smartrefresh:SmartRefreshLayout:1.0.3' //下拉刷新
源码
还没搭建github,先放百度云吧,https://pan.baidu.com/s/1bYwJD0
布局
先看一下整体的布局
CoordinatorLayout包裹下面这两个,CoordinatorLayout外层由SmartRefreshLayout包裹,CollapsingToolbarLayout中一定要写flag,
app:layout_scrollFlags="scroll|exitUntilCollapsed|snap",不然CollapsingToolbarLayout不能折叠和展开。
分析
布局写好之后,要对viewpager和TabLayout进行操作:
别忘了初始化沉浸式
mImmersionBar.titleBar(toolbar).init();
写一个Adapter_Page继承FragmentPagerAdapter,然后把TabLayout和viewpager关联起来
是不是很简单,运行一下,发现tablayout的indicator有些长
本来我以为有方法直接改变他的长度,结果发现并没有,然后我百度了一下,别人是通过反射修改踏遍layout的宽,其实相当于margin,这里的方法到时候看源码。
重点
主要点在于滑动的时候,对AppBarLayout添加addOnOffsetChangedListener监听,当他向上滑动的距离刚好等于它的底部到toolbar底部的距离时,显示ButtonBarLayout,并且将状态栏字体颜色改为黑色,其他情况下,隐藏ButtonBarLayout,将状态栏字体颜色改为白色。
下拉刷新时,背景图片要做一个向下平移的动画,此时,我们对外层的刷新控件refreshLayout做一个setOnMultiPurposeListener监听,监听得到滑动距离offset,然后对背景图片iv_parallax做一个平移动画,这个平移距离mOffset=offset / 2,当然这个距离是你自己定的,你也还可以增加一个放大的动画。