多样化条目RecyclerView,以及多样化动画点击效果(附源码)
2017-12-08 09:41
288 查看
本文转载自http://lib.csdn.net/article/android/63037 感谢原作者的付出与分享精神。
(本文中点击效果更新了,想了解点击效果请移步:http://blog.csdn.net/bamboy_/article/details/54342079
RecyclerView是support-v7包中的新组件,
是一个强大的滑动组件。
与经典的ListView相比,
同样拥有item回收复用的功能,
直接把viewholder的实现封装起来,
用户只要实现自己的viewholder就可以了,
该组件会自动帮你回收复用每一个item。
它不但变得更精简,
也变得更加容易使用,
而且更容易组合设计出自己需要的滑动布局。
RecyclerView出世有段时间了,
我也把我的项目中的ListView替换成了RecyclerView,
只是,
RecyclerView与ListView的Adapter格式本就有很大区别,
那么遇到多样式Item的时候该怎么办呢?
比如我的RecyclerView中的条目有很多种样式,
第一个条目是商品,
第二个条目可能就是广告,
第三个条目可能是个ViewPager等等……
于是我把这个问题解决后分享给大家,
希望帮到遇到同样情况的朋友们。
此Dome内容主要分为两点:
1、 多样化条目的列表;
2、 多样化点击动画效果。
看下效果先:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201712/7bdedd7565b76d42ec8372c0271e413e)
1、 多样化条目:
首先,
每个条目不同的数据结构,
当然要有不同的Bean,
但是那么多Bean,
如果一股脑全都扔到Adapter里是不是很混乱呢?
所以我们第一步是创建一个“强大”的Bean,
一起来看一下:
1) BeanObject:
这个Bean至少需要两个字段:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201712/b18920113a0d96f6a5ad7b24e0caa214)
很显然,
我的目的就是把各种类型的Bean都封装在content里,
然后以state来区分,
为了防止种类太多太乱,
我们可以用常量来进行规范化。
比如我的三种Bean的常量:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201712/cf91320d500113bf43f62b7c4abc9112)
为了方便使用,建议给BeanObject加上有参构造。
2) List mList:
这部分就很简单了,
只需要把数据装进去就行了:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201712/fd4883b6ba41800eb29326587a00c33d)
3) Adapter
以上的部分,
无论是RecyclerView还是ListView,
都是差不多的,
真正的重点才刚刚开始。
我们都知道无论是RecyclerView还是ListView的Adapter,
都是需要ViewHolder的,
所以我们首先写一个ViewHolder:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201712/708bd348275a3582f2c2296e2b5aa882)
这个ViewHolder只是个基类,
所以我们只需要有一个state字段即可。
下面是我们各种Item的ViewHolder了:
手机的:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201712/7b8d61cb7456df177c5ccf28f362b7dc)
电脑的:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201712/57785b42f0945a7e538ee7b795420e1c)
平板的:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201712/f80e3f9b896a90cff0373216f3282341)
好了,
三种ViewHolder完事,
下面轮到我们的重中之重了,
Adapter的getItemViewType方法:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201712/756bb820d166b5b44f3fcc7cad2ea5c2)
这里就用到上面我们说的BeanObject中的state字段了,
用于获取这是哪个种类的Item,
以判断我们该使用哪个XML布局,
话不多说,上代码:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201712/6edcbfd2be9d9b071459d1b50f439e7a)
到现在为止,
布局部分基本完成,
下面就只需要往控件里边充气…
哦不,塞数据就好了。
为了条理清晰,
我全部封装成方法:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201712/a20a97ab59d2d27b65e84ed10fd77877)
本着送佛送到西的精神,
再给你们看下这几个方法的具体实现:
手机:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201712/b0c6c54a7e95c0134e4afe12ccf62129)
电脑:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201712/073d7a6978e71bc66b793b95753f6f9a)
平板:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201712/528b7186338ba7f72173b4c68bd9b680)
不要问我为什么给他们都加上了空的OnClick事件,
后面再告诉你们。
你们以为这样就完事儿了?
呵呵,其实确实这么就完事儿了……
2、 多样化动画点击效果:
(点击效果更新了,想了解请移步:http://blog.csdn.net/bamboy_/article/details/54342079
看完上边,
是不是需要点时间来消化呢?
没关系,
下边我们来玩点好玩的,
那就是上面你们看到的点击效果:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201712/7bdedd7565b76d42ec8372c0271e413e)
怎么样,
看到这个效果是不是有点小激动?
这个效果可能看上去过于华丽,
感觉实现起来很复杂,
甚至会有人望而却步……
其实完全不用担心,
想要使用这个效果,
简单到让你不敢相信:
在使用之前,
我们给你们简单看下一个包,
其实我完全可以把它打成一个jar包,
但是为了大家伙儿研究起来方便,
还是放弃了打成jar包的念头。
我的注释还算得上全面的,
大家如果想研究的话,
打开即可研究。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201712/91fd7e148dd364f932b63ee2179fb5e4)
就是这么几个小家伙儿,
大家想研究的话直接找这里即可。
好了不多说了,
直接上使用教程!
找到需要点击效果的控件,
在XML里控件名称前加上这么包名就好了,
比如说像我的就是这样:
com.bamboy.bamboy.colourful.bamUI.Bam
如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201712/997d5f4e64942f856227c2bcb550d93f)
嗯,就这么简单。
唯一需要注意的是,
由于是点击效果,
所以使用这些效果的控件必须要设置OnClick事件!
谨记!
否则在界面可滚动时不会回弹。
现在知道为什么上边要加上OnClick事件了吧?
即使不需要也要加上一个空的。
附上源码下载链接:http://download.csdn.net/detail/qq_24515359/9504323
(AndroidStudio编写,Eclipse自己多费些精力哈)
如果觉得尘少的Demo还不错的话,
可以克隆我的Git仓库,
各种酷炫效果收入囊中:
https://github.com/Bamboy120315/bamboy.git
手机扫码下载App一睹为快:
(本文中点击效果更新了,想了解点击效果请移步:http://blog.csdn.net/bamboy_/article/details/54342079
RecyclerView是support-v7包中的新组件,
是一个强大的滑动组件。
与经典的ListView相比,
同样拥有item回收复用的功能,
直接把viewholder的实现封装起来,
用户只要实现自己的viewholder就可以了,
该组件会自动帮你回收复用每一个item。
它不但变得更精简,
也变得更加容易使用,
而且更容易组合设计出自己需要的滑动布局。
RecyclerView出世有段时间了,
我也把我的项目中的ListView替换成了RecyclerView,
只是,
RecyclerView与ListView的Adapter格式本就有很大区别,
那么遇到多样式Item的时候该怎么办呢?
比如我的RecyclerView中的条目有很多种样式,
第一个条目是商品,
第二个条目可能就是广告,
第三个条目可能是个ViewPager等等……
于是我把这个问题解决后分享给大家,
希望帮到遇到同样情况的朋友们。
此Dome内容主要分为两点:
1、 多样化条目的列表;
2、 多样化点击动画效果。
看下效果先:
1、 多样化条目:
首先,
每个条目不同的数据结构,
当然要有不同的Bean,
但是那么多Bean,
如果一股脑全都扔到Adapter里是不是很混乱呢?
所以我们第一步是创建一个“强大”的Bean,
一起来看一下:
1) BeanObject:
这个Bean至少需要两个字段:
很显然,
我的目的就是把各种类型的Bean都封装在content里,
然后以state来区分,
为了防止种类太多太乱,
我们可以用常量来进行规范化。
比如我的三种Bean的常量:
为了方便使用,建议给BeanObject加上有参构造。
2) List mList:
这部分就很简单了,
只需要把数据装进去就行了:
3) Adapter
以上的部分,
无论是RecyclerView还是ListView,
都是差不多的,
真正的重点才刚刚开始。
我们都知道无论是RecyclerView还是ListView的Adapter,
都是需要ViewHolder的,
所以我们首先写一个ViewHolder:
这个ViewHolder只是个基类,
所以我们只需要有一个state字段即可。
下面是我们各种Item的ViewHolder了:
手机的:
电脑的:
平板的:
好了,
三种ViewHolder完事,
下面轮到我们的重中之重了,
Adapter的getItemViewType方法:
这里就用到上面我们说的BeanObject中的state字段了,
用于获取这是哪个种类的Item,
以判断我们该使用哪个XML布局,
话不多说,上代码:
到现在为止,
布局部分基本完成,
下面就只需要往控件里边充气…
哦不,塞数据就好了。
为了条理清晰,
我全部封装成方法:
本着送佛送到西的精神,
再给你们看下这几个方法的具体实现:
手机:
电脑:
平板:
不要问我为什么给他们都加上了空的OnClick事件,
后面再告诉你们。
你们以为这样就完事儿了?
呵呵,其实确实这么就完事儿了……
2、 多样化动画点击效果:
(点击效果更新了,想了解请移步:http://blog.csdn.net/bamboy_/article/details/54342079
看完上边,
是不是需要点时间来消化呢?
没关系,
下边我们来玩点好玩的,
那就是上面你们看到的点击效果:
怎么样,
看到这个效果是不是有点小激动?
这个效果可能看上去过于华丽,
感觉实现起来很复杂,
甚至会有人望而却步……
其实完全不用担心,
想要使用这个效果,
简单到让你不敢相信:
在使用之前,
我们给你们简单看下一个包,
其实我完全可以把它打成一个jar包,
但是为了大家伙儿研究起来方便,
还是放弃了打成jar包的念头。
我的注释还算得上全面的,
大家如果想研究的话,
打开即可研究。
就是这么几个小家伙儿,
大家想研究的话直接找这里即可。
好了不多说了,
直接上使用教程!
找到需要点击效果的控件,
在XML里控件名称前加上这么包名就好了,
比如说像我的就是这样:
com.bamboy.bamboy.colourful.bamUI.Bam
如下:
嗯,就这么简单。
唯一需要注意的是,
由于是点击效果,
所以使用这些效果的控件必须要设置OnClick事件!
谨记!
否则在界面可滚动时不会回弹。
现在知道为什么上边要加上OnClick事件了吧?
即使不需要也要加上一个空的。
附上源码下载链接:http://download.csdn.net/detail/qq_24515359/9504323
(AndroidStudio编写,Eclipse自己多费些精力哈)
如果觉得尘少的Demo还不错的话,
可以克隆我的Git仓库,
各种酷炫效果收入囊中:
https://github.com/Bamboy120315/bamboy.git
手机扫码下载App一睹为快:
相关文章推荐
- 多样化条目RecyclerView,以及多样化动画点击效果(附源码)
- RecyclerView介绍(五)----实现点击效果以及动画
- RecyclerView实现分割线、点击事件、条目加载动画
- RecyclerView的Item点击事件,增加删除Item瀑布流动画效果,长按拖动Item,RecyclerView复杂布局、实现新闻频道选择器
- RecyclerView的使用以及下拉刷新自动加载(添加点击事件、头部)
- RecyclerView的拖动和滑动 第二部分 :拖块,Grid以及自定义动画
- BaseRecyclerViewAdapterHelper开源项目之点击事件源码学习
- ViewPager多页面滑动切换以及动画效果 (转载)
- Android ViewPager多页面滑动切换以及动画效果
- RecyclerView实现滚动滑动以及点击改变控件颜色
- Android ViewPager多页面滑动切换以及动画效果
- Recyclerview实现瀑布流布局及条目的点击事件
- RecyclerView条目动画,超简单,一行代码搞定
- 实现RecyclerView下拉刷新和上拉加载更多以及RecyclerView线性、网格、瀑布流效果演示
- RecyclerView 初次体验,实现增加删除条目及item长按和点击事件
- recyclerview的点击条目删除
- [Android实例] ViewPager多页面滑动切换以及动画效果
- RecyclerView的拖动和滑动 第二部分 :拖块,Grid以及自定义动画
- Android使用RecyclerView实现自定义列表、点击事件以及下拉刷新
- android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码