先看效果图:

左图是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

仿制《58同城》首页滑动界面相关推荐

  1. 58同城首页腰部动态化技术选型(布局动态化)

    1. 行业情况 1.1 基本概念介绍 1.1.1 Web混合 Web 前端和客户端的混合开发.使用 WebView 进行页面渲染.逻辑执行:依赖客户端的能力需要通过 JSBridge(通信桥) 的方式 ...

  2. 58 同城 iOS 客户端搜索模块组件化实践

    [编者按]58 同城 App 自从 1.0 版本开始,便已经提供了搜索功能.随着版本的迭代.业务的复杂,搜索框架也在不断受到挑战.诸如代码不能复用.耦合度高.业务功能接入成本高等问题日积月累,成为需要 ...

  3. 58同城的布局html,从58同城看符合seo的网站布局

    网站的布局和用户体验息息相关,如果您设计的网站可以从用户大众需求.方便浏览.既得利益考虑那么这样的布局更能留住用户,也更能获得更多的流量,从而转化成网站的权重.今天王克江和您分享符合seo的网站布局. ...

  4. 58 同城 iOS 客户端 iOS11 及 iPhone X 适配实践

    一.前言 前段时间 WWDC 大会上苹果推出了 iOS11 系统 和 iPhone X 新机型,相信各个 iOS 团队的开发者都已经在计划新系统和新机型的适配工作了.不得不说,新系统和新机型的发布确实 ...

  5. 赶集网和58同城网的赌局

    有一种赌局,最终的赢家只有一个. 杨浩涌与姚劲波正是这样的赌局中的一对忠实赌徒. 前者统帅赶集网,后者掌管58同城网.大众或许是从姚晨"我有一头小毛驴"和杨幂咆哮"这是一 ...

  6. 简历爬取系列(二)——破解58同城简历中的加密字符

    直接目的:针对58同城简历数据中的加密字符,进行破解,以还原其对应的真实文字. 根本目的:爬取58同城网站上的个人简历,进行信息储备. 现有环境:安装python3.6的五服务器. 下面就开始吧. 如 ...

  7. 58同城 Elasticsearch 应用及平台建设实践

    分享嘉宾:于伯伟 58同城 高级架构师 编辑整理:陈树昌 内容来源:DataFunTalk 导读:Elasticsearch是一个分布式的搜索和分析引擎,可以用于全文检索.结构化检索和分析,并能将这三 ...

  8. 基于Hadoop的58同城离线计算平台设计与实践

    作者:余意,来自:DataFun 导读:58离线计算平台基于 Hadoop 生态体系打造,单集群4000+台服务器,数百 PB 存储,日40万计算任务,面临挑战极大.58大数据平台的定位主要是服务数据 ...

  9. 58同城沈剑:好的架构源于不停地衍变,而非设计

    本次演讲主要会阐述,58同城从小流量.中等规模流量.大流量,到更大的流量过程中,架构是如何演进的?遇到了哪些问题?以及如何解决这些问题? 好的架构不是设计出来的,而是演进出来的 对很多创业公司而言,很 ...

最新文章

  1. java初始化实例化_Java对象的创建过程:类的初始化与实例化
  2. onSaveInstanceState与onRestoreInstance
  3. 2 构建Mysql+heartbeat+DRBD+LVS集群应用系统系列之MySql的搭建
  4. Zookeeper分布式一致性原理(二):一致性协议
  5. 动手学深度深度学习-pycharm中配置mxnet开发环境
  6. Java文件字节流和字符流FileInputStream,FileOutputStream,FileReader,FileWriter
  7. MySQL · 源码分析 · 一条insert语句的执行过程
  8. 计算机基础知识总结论文,大学计算机基础总结论文
  9. c语言 单词变复数_【热点】浅谈 :怎样学好C语言?
  10. List接口的常用方法以及ArrayList/LinkedList源码分析
  11. mysql xa 实现_MySQL数据库分布式事务XA的实现原理分析
  12. Replication的犄角旮旯(四)--关于事务复制的监控
  13. mysql 批量数据循环插入
  14. 【Android】-- adb shell 命令探索
  15. 读《About Face 4 交互设计精髓》2
  16. Summation Prove (Intro. to Algo. Open Course Episode 5) in Quick Sort
  17. Chrome浏览器对统一资源发出多个请求时,导致最多停止20s问题
  18. Android应用中打开微信扫一扫
  19. Postfix部署【2】传输代理
  20. oracle 表空间管理

热门文章

  1. 深度优先搜索算法总结
  2. 【JVM】Java类加载器设计原理(ClassLoader源码解读/ SPI机制/ 绕开双亲委派/ 常见Java虚拟机)
  3. 实现PC视频播放最强画质教程( Potplayer播放器+MADVR插件)【转】
  4. 2021-10-17 FLASK下的公共网盘以及私有网盘的写法
  5. 在线客服兼容谷歌Chrome、苹果Safari、Opera浏览器的修改
  6. MYSQL之ifnull(),nullif(),isnull()的用法
  7. 华为HMS游戏排行榜请求报错HTTP 502
  8. tp5 (图片)多图上传并生成可访问的链接
  9. 微信小程序日记、微信小程序个人空间、个人日记
  10. 6种方式,抖音变现大盘点