带我装X带我飞的安卓RecyclerView

     不知不觉安卓开发两年半,一直以来都是做着伸手党。从来没有尝试过分享自己的代码,或者将自己的搬砖心得记录下来写成博文。仔细想想,这种技术博文分享不论含金量高低,只要是自己用心的去记录梳理一遍,于人于己,多少都会有提高和帮助的。正好也为了响应新公司的要求,本月开始,坚持一月整理一篇!本人安卓半路出家,技术不咋地,所以会多从实际应用的角度出发来聊聊安卓相关的控件,开源库等。至于底层原理,框架内核方面有兴趣的可以自行查看源码。


     闲话不多说,首先抛出一个问题


RecyclerView是什么?

个人理解:

RecyclerView={Listview+GridView+HorizonList+……}综合优化版

RecylerView是support-v7包中的新组件,是一个强大的滑动组件,与经典的ListView相比,同样拥有item回收复用的功能,这一点从它的名字

RecyclerView即回收view也可以看出。

对比Listview的优点:

1.标准化了View Holder,复用更加简单

2.显示效果更加灵活,一个LayoutManager类实现多种展示效果,并且常规的效果都有默认实现类,狂拽酷炫的效果自定义去实现。

3.酷炫到不可思议的Item动画效果(属性动画)

4.局部刷新机制,体验更好

5.更多,更灵活的监听接口,需求变态?毫不畏惧有木有

你想要控制其显示的方式,请通过布局管理器LayoutManager

你想要控制Item间的间隔(可绘制),请通过ItemDecoration

你想要控制Item增删的动画,请通过ItemAnimator


然后呢?

看了不少RecyclerView相关的文章,基本上都是一个套路,介绍完RecyclerView后立马就是上代码,,,那么既然我要自己写,肯定不能雷同,这里我直接上图!将实际项目中用到过RecyclerView的地方展示一下,还没用过的客官们可以自己想一下,这些效果如果让你用ListView实现能实现吗?实现起来的话大概是个什么代码量,会不会有坑,能不能跟RecyclerView一样实现起来简单又丝滑?

注:以下展示部分节选自经手的实际项目,其余为第三方框架提供的demo或在demo上进行的修改。

示例1:头部导航悬停 

实现方式:实现RecyclerView.OnScrollListener,根据滚动状态做逻辑处理

核心实现代码:(HidingScrollListener extends RecyclerView.OnScrollListener)

1.判断第一个元素是否可见,如果可见则无论如何滑动也要显示出导航栏

2.当第一个元素不可见则根据当前滑动的这一小段距离(mScrolledDistance,正负表示向下,向上)对应的展示或者隐藏导航栏

3.外部recyclerview直接调用addOnScrollListener加载这个滚动监听就行

HidingScrollListener



示例2:头部导航吸顶

实现方式:RecyclerView+开源库(PinnedHeaderItemDecoration)

参考链接:github.com/oubowu/PinnedSectionItemDecoration


示例3:多布局丝滑滚动

实现方式:无需处理滑动冲突等等,本人的实现是recycleview嵌套recycleview

核心代码:

可以看到,实际上主界面就是一个recyclerview,recyclerview的Adapter里面实现多布局,其实这些布局也是recyclerview,不管你要横向,竖直,瀑布流或者是多行并列,统统用recyclerview


示例4:简单的item飞入动画


实现方式:recycleview+属性动画

示例5:模仿支付宝头部渐变、回弹;多布局,上拉加载更多效果(重点是滑动丝滑)

实现方式:实现RecyclerView.OnScrollListener,计算头部滑动百分比,处理松手后的回弹等

核心代码:

跟例1类似,也是实现OnScrollListener监听,要说明的是判断滚动是否到达item一般高度后决定滚动到顶部或position1的位置的时候试过很多api,有的有bug(不够丝滑),如图,最终采用scrollBy的方式实现了丝滑的滚动


其实demo中还有很多酷炫的效果,只不过手机上录制到转gif再上传过程太麻烦,这里就省略啦,但是各位看官一定要明白,举这么多栗子真的就是想告诉你,recyclerview真的很强大!艺术般的控件!

最后放个大招,网上找到的一个很炫酷的Recyclerview的自定义LayoutManager,呈现的效果就是正六边形布局,图中的数字代表position,添加的位置以0为中心,顺时针的围成更大的正六边形!!好想有机会的项目里用一用啊!!


这里在原demo的基础上结合数列通项公式进行了改装,使得数据初始化能根据传入的i生成对应2i-1圈的数据,并且通过每圈的首尾元素互换实现了整圈旋转,效果看起来不错~

开源库:www.see-source.com/androidwidget/detail.html



好了,关于Recyclerview的介绍就到这里,本来很想细致的谈一些深层一点的如Recyclerview源码分析之类的东西,结果发现以目前的水平来写的话可能大篇幅的都需要“引用" ,"借鉴”了,不如不写。就纯粹的以实际接触到的这么点东西做一个简单的展示好啦。

最后的最后对目前还没有正式上手Recycleview的开发者介绍一个关于Recycleview 适配器的开源项目“BRVAH”,这个项目是干嘛的,有什么用这里就不做过多介绍。只说一句:BRVAH让我在使用Recycleview做开发的时候写起代码满是幸福感!(别人的评价,这里借用下,哈哈)

BRVAH官方:http://www.recyclerview.org/          

github:  https://github.com/CymChad/BaseRecyclerViewAdapterHelper

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容