代码地址如下:
http://www.demodashi.com/demo/13381.html

先来一波demo截图

实现ListView、GridView、瀑布流

1、导入RecyclerView的库
compile 'com.android.support:recyclerview-v7:25.0.0'

2、xml布局里面使用
`

显示混合布局


如上图这种,现在很流行的布局,里面包含很多不同的布局,但还是可以很流畅的滑动,其实这个本身就是一个RecyclerView实现的,但是RecyclerView是如何根据不同的position来显示不同的布局的呢,大家可以参考我之前写的博客: RecyclerView的不同position加载不同View实现。

其实原理就是使用到了RecyclerView.Adapter里面另外一个重写的方法:

public int getItemViewType(int position)
这个方法可以根据不同的position返回不同的type,这个type会以参数的形式给onCreateViewHolder的第二个参数,public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
这样,onCreateViewHolder就可以根据不同的viewType来加载不同的xml布局switch (type) {case ITEM_BANNER:return new BannerViewHolder(mLayoutInflater.inflate(R.layout.fragment_home_banner, parent, false));case ITEM_THIRD:return new ThirdViewHolder(mLayoutInflater.inflate(R.layout.fragment_home_third, parent, false));case ITEM_CATEGORY:return new CategoryViewHolder(mLayoutInflater.inflate(R.layout.fragment_home_category, parent, false));case ITEM_LIST:return new ListViewHolder(mLayoutInflater.inflate(R.layout.fragment_home_list, parent, false));case ITEM_AD:return new AdViewHolder(mLayoutInflater.inflate(R.layout.fragment_home_ad, parent, false));} 

具体可以参考demo里面的TecentAdapter这个类,腾讯首页这个页面,按照类型来分,可以分为banner、三方应用、大图、列表、广告这5块。

点击事件

RecyclerView不比ListView,ListView直接有onItemClick的监听事件,但是RecyclerView是需要自己写的。 在adapter里面,先定义callback接口

/*** add onItemClick begin*/public interface OnRecyclerViewItemClickListener {void onItemClick(View view, int position);}private OnRecyclerViewItemClickListener mOnItemClickListener = null;public void setOnItemClickListener(OnRecyclerViewItemClickListener listener) {mOnItemClickListener = listener;}

在adapter的onBindViewHolder方法里面

    holder.cardview.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (mOnItemClickListener != null) {mOnItemClickListener.onItemClick(v, position);}}});

之后,在Activity中,可以直接回调

mAdapter.setOnItemClickListener(new NewsAdapter.OnRecyclerViewItemClickListener() {@Overridepublic void onItemClick(View view, int position) {//写点击事件}});

项目文件目录结构图:

android实现超酷的腾讯视频首页和垂直水平网格瀑布流一揽子效果

代码地址如下:
http://www.demodashi.com/demo/13381.html

注:本文著作权归作者,由demo大师发表,拒绝转载,转载需要作者授权

android实现超酷的腾讯视频首页和垂直水平网格瀑布流一揽子效果相关推荐

  1. 爱奇艺、优酷、腾讯视频竞品分析报告2016(一)

    1 背景 1.1 行业背景 1.1.1 移动端网民规模过半,使用时长份额超PC端 2016年1月22日,中国互联网络信息中心 (CNNIC)发布第37次<中国互联网络发展状况统计报告>,报 ...

  2. 爱奇艺、优酷、腾讯视频竞品分析报告2016(二)

    接上一篇<爱奇艺.优酷.腾讯视频竞品分析报告2016(一)> http://milkyqueen520.blog.51cto.com/11233158/1760192 2.4 产品设计与交 ...

  3. php flash 代码转换,PHP实现将优酷土豆腾讯视频html地址转换成flash swf地址的方法...

    本文实例讲述了PHP实现将优酷土豆腾讯视频html地址转换成flash swf地址的方法.分享给大家供大家参考,具体如下: 很多用户不知道如何复制flash地址,只能在程序中帮他们替换了: /** * ...

  4. 爱奇艺首页底部导航按钮android,仿爱奇艺/腾讯视频ViewPager导航条实现

    仿爱奇艺/腾讯视频ViewPager导航条实现,支持自定义导航条高度,宽度,颜色变化,字体大小变化.支持多种滚动模式,支持自定义每个TabView的样式.项目地址:https://github.com ...

  5. 如何用技术手段“干掉”优酷、腾讯视频 App 里讨厌的广告?

    作者简介:互扯程序,某互联网公司 P8 级专家攻城狮,曾参与过央视全台网的研发工作.目前正在做车联网项目的云平台的架构设计与研发工作.平时喜欢打球游泳,偶尔发表一些技术文章,有个公众号叫「互扯程序」. ...

  6. android 水平方向瀑布流,Android RecyclerView(瀑布流)水平/垂直方向分割线

     Android RecyclerView(瀑布流)水平/垂直方向分割线 Android RecyclerView不像过去的ListView那样随意的设置水平方向的分割线,如果要实现Recycle ...

  7. Android 调用优酷SDK上传视频

    最近在研究用优酷的SDK来进行视频上传的功能,由于优酷的SDK只是提供了一个上传的sample code,没有涉及到授权的过程,对于新手来说,可能非常棘手,现在分享一下我的思路: 程序实现前我们先要到 ...

  8. Android 调用优酷SDK上传视频获取Token与code步骤

    我们在做优酷上传视频的时候发现没有获取code与token这个过程,这可能会让些编程新手感到棘手,所以为了方便大家简单分享下我的思路: 程序实现前我们先要到优酷开放平台下载SDK(下载地址:http: ...

  9. 优酷、腾讯视频分享代码html替换通用

    public function video_h(){$sql = "select h.title,d.content from v9_hjxy_data as d,v9_hjxy as h ...

最新文章

  1. 互联网创业如何与传统行业人士合作?
  2. Java实现在线预览功能
  3. Android NDK学习笔记5:引用类型管理
  4. 树状数组(Binary Indexed Tree)
  5. Web框架——Flask系列之Flask-SQLAlchemy安装与使用 定义数据模型(八)
  6. 大数据时代,新起的数据有哪几种模型
  7. 刘知远老师的“灵魂发问”:关系抽取到底在乎什么?
  8. 【原】Storm调度器
  9. Android 解决Dialog 样式的Activity 半透明背景失效问题
  10. 抖音快手火山 热门采集/个人主页无水印视频批量解析下载工具2019-11-11
  11. RK3399 USB RNIDS/gagnet实战
  12. Cobar的安装和配置步骤
  13. 银行账户管理体系总结
  14. 流量+安全 平安WiFi卡位入口战略
  15. codeforces 417D Cunning Gena
  16. “去中心化”和“分布式”的区别
  17. shell中的括号(小括号,大括号/花括号)的使用方法
  18. 【uni-app】解决iPhone X “刘海屏”兼容性问题
  19. Springboot实战项目---从需求分析到项目部署一站式开发,给简历添加一点色彩
  20. Nginx解决端口问题

热门文章

  1. java servlet 入门_servlet 入门详解
  2. 第六章——串并行通信与接口技术
  3. 典型的SPI控制器的结构
  4. 等待队列中为什么需要互斥锁?一个线程在等待时被唤醒后会做什么?安全队列的代码实现
  5. mysql数据还原命令_mysql数据备份和还原命令:mysqldump
  6. 【笔记】JAVA SE
  7. 简述DNS进行域名解析的原理
  8. linux 用户管理和帮助命令
  9. Nginx中的break和last
  10. finalize()方法什么时候被调用?析构函数(finalization)的目的是什么?