Android仿微博Android-CoordinatorLayout.……android

Android仿微博主页个人信息界面

2017-12-05  本文已影响1206人  牛奶糖_王小二

前言

之前在网上找了一下微博主页的轮子,发现没找到合适的,多多少少有一些问题,所以决定自己写一个。

话不多说,先上个效果图: 

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,当然这个距离是你自己定的,你也还可以增加一个放大的动画。

总结

公司项目刚好要写一个类似的功能,整理了一下,第一次写简书,如果有写错的地方,欢迎大家指正。

上一篇下一篇

猜你喜欢

热点阅读