仿制《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
仿制《58同城》首页滑动界面相关推荐
- 58同城首页腰部动态化技术选型(布局动态化)
1. 行业情况 1.1 基本概念介绍 1.1.1 Web混合 Web 前端和客户端的混合开发.使用 WebView 进行页面渲染.逻辑执行:依赖客户端的能力需要通过 JSBridge(通信桥) 的方式 ...
- 58 同城 iOS 客户端搜索模块组件化实践
[编者按]58 同城 App 自从 1.0 版本开始,便已经提供了搜索功能.随着版本的迭代.业务的复杂,搜索框架也在不断受到挑战.诸如代码不能复用.耦合度高.业务功能接入成本高等问题日积月累,成为需要 ...
- 58同城的布局html,从58同城看符合seo的网站布局
网站的布局和用户体验息息相关,如果您设计的网站可以从用户大众需求.方便浏览.既得利益考虑那么这样的布局更能留住用户,也更能获得更多的流量,从而转化成网站的权重.今天王克江和您分享符合seo的网站布局. ...
- 58 同城 iOS 客户端 iOS11 及 iPhone X 适配实践
一.前言 前段时间 WWDC 大会上苹果推出了 iOS11 系统 和 iPhone X 新机型,相信各个 iOS 团队的开发者都已经在计划新系统和新机型的适配工作了.不得不说,新系统和新机型的发布确实 ...
- 赶集网和58同城网的赌局
有一种赌局,最终的赢家只有一个. 杨浩涌与姚劲波正是这样的赌局中的一对忠实赌徒. 前者统帅赶集网,后者掌管58同城网.大众或许是从姚晨"我有一头小毛驴"和杨幂咆哮"这是一 ...
- 简历爬取系列(二)——破解58同城简历中的加密字符
直接目的:针对58同城简历数据中的加密字符,进行破解,以还原其对应的真实文字. 根本目的:爬取58同城网站上的个人简历,进行信息储备. 现有环境:安装python3.6的五服务器. 下面就开始吧. 如 ...
- 58同城 Elasticsearch 应用及平台建设实践
分享嘉宾:于伯伟 58同城 高级架构师 编辑整理:陈树昌 内容来源:DataFunTalk 导读:Elasticsearch是一个分布式的搜索和分析引擎,可以用于全文检索.结构化检索和分析,并能将这三 ...
- 基于Hadoop的58同城离线计算平台设计与实践
作者:余意,来自:DataFun 导读:58离线计算平台基于 Hadoop 生态体系打造,单集群4000+台服务器,数百 PB 存储,日40万计算任务,面临挑战极大.58大数据平台的定位主要是服务数据 ...
- 58同城沈剑:好的架构源于不停地衍变,而非设计
本次演讲主要会阐述,58同城从小流量.中等规模流量.大流量,到更大的流量过程中,架构是如何演进的?遇到了哪些问题?以及如何解决这些问题? 好的架构不是设计出来的,而是演进出来的 对很多创业公司而言,很 ...
最新文章
- java初始化实例化_Java对象的创建过程:类的初始化与实例化
- onSaveInstanceState与onRestoreInstance
- 2 构建Mysql+heartbeat+DRBD+LVS集群应用系统系列之MySql的搭建
- Zookeeper分布式一致性原理(二):一致性协议
- 动手学深度深度学习-pycharm中配置mxnet开发环境
- Java文件字节流和字符流FileInputStream,FileOutputStream,FileReader,FileWriter
- MySQL · 源码分析 · 一条insert语句的执行过程
- 计算机基础知识总结论文,大学计算机基础总结论文
- c语言 单词变复数_【热点】浅谈 :怎样学好C语言?
- List接口的常用方法以及ArrayList/LinkedList源码分析
- mysql xa 实现_MySQL数据库分布式事务XA的实现原理分析
- Replication的犄角旮旯(四)--关于事务复制的监控
- mysql 批量数据循环插入
- 【Android】-- adb shell 命令探索
- 读《About Face 4 交互设计精髓》2
- Summation Prove (Intro. to Algo. Open Course Episode 5) in Quick Sort
- Chrome浏览器对统一资源发出多个请求时,导致最多停止20s问题
- Android应用中打开微信扫一扫
- Postfix部署【2】传输代理
- oracle 表空间管理
热门文章
- 深度优先搜索算法总结
- 【JVM】Java类加载器设计原理(ClassLoader源码解读/ SPI机制/ 绕开双亲委派/ 常见Java虚拟机)
- 实现PC视频播放最强画质教程( Potplayer播放器+MADVR插件)【转】
- 2021-10-17 FLASK下的公共网盘以及私有网盘的写法
- 在线客服兼容谷歌Chrome、苹果Safari、Opera浏览器的修改
- MYSQL之ifnull(),nullif(),isnull()的用法
- 华为HMS游戏排行榜请求报错HTTP 502
- tp5 (图片)多图上传并生成可访问的链接
- 微信小程序日记、微信小程序个人空间、个人日记
- 6种方式,抖音变现大盘点