仿制《58同城》首页滑动界面

先看效果图:

左图是58同城,右图是我模仿它的


  



我用CoordinatorLayout那种方法做,在这里总结下一直以来的使用经验,以这个58同城仿制demo为例:

 

1、 首先要确定谁做dependency(依赖视图),dependency一定要随着手势滑动而位置变化。明显那个搜索框是适合的,但还不理想。有时我们甚至找不到合适的人选。所以为什么我们不自己创造一个呢。我就特意创造了一个dependency,放一个适合的位置上,而且这个dependency高度为0,计算时多方便啊。

2、 编写Behavior,我在layoutDependsOn()把CoordinatorLayout里的view都引用了。这很方便,无所谓耦合性的问题。它们都是同一个Activity的,同一布局的,它们只是随着滑动设置自己的位置而已,又不是它们内部的代码互相纠缠。如果你不这样做,你就要编写很多个Behavior,处理滑动时写上很多重复的代码。

 

上面两点比较不同于一般的网上教程,但我认为这样做更好。

 

3、 然后处理手指按下并滑动的情况:onNestedPreScroll()与onNestedScroll()。onNestedPreScroll()处理上滑,onNestedScroll()处理下滑。

4、 跟着处理手指松开的情况:onNestedPreFling()与onStopNestedScroll()。onNestedPreFling()是准备惯性fling时的情况。先设定好dependency的几个特定位置,例如有:折叠、展开、下拉到可刷新、下拉到最大。在actionUp()这个方法分情况处理自动滑动的效果。还有些细节,刷新完后的自动滑动动画不同,要分开处理。

5、 在onDependentViewChanged()设置view们随着dependency的变化而变化。

 

其他的都是一些细节问题。做那个弧线路径也比较有技术含量。

 

详细项目:

https://github.com/zhengjingle/WuBaDemo


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值