前言

入职新公司已经好几天了,一直在熟悉项目的代码,当然就会碰到各样的框架,而很多都是之前自己没有接触过的,就把其中用到的一些很棒的框架介绍给大家。这个系列会一直写下去。

正文

twoway-view

twoway-view github 下载地址

twoway-view的下载地址已经贴出来,大家可以直接去下载,运行一下demo,你会被他的强大之处所惊叹:原来实现个性的网格布局这么easy!

github上和demo介绍的还是很清楚的,用法也很简单,下面我把我所了解的总结一下:

介绍

首先,这个框架是主要是为RecyclerView做扩展的,现在官方已经推荐开发者去使用RecyclerView去开发列表和网格布局,这个框架完全可以满足ListView和GridView的使用场景。

如果你还不了解RecyclerView的使用,那么你可以先去看看RecyclerView的使用方法,这对于你了解twoway-view框架非常有帮助。

四种布局

ListLayoutManager

列表式布局,可以设置竖向或者是横向(android:orientation)。

设置有两种方法,一种是xml:

<org.lucasr.twowayview.widget.TwoWayViewxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:id="@+id/list"android:layout_width="match_parent"android:layout_height="match_parent"style="@style/TwoWayView"android:orientation="horizontal"app:twowayview_layoutManager="ListLayoutManager"/>

还可以通过java代码:

ListLayoutManager有三种构造方法,了解过View的构造函数的朋友是不是觉得第一种和第二种很熟悉? 没错,那是xml中使用的构造函数,所以我们去看第三种就好了,参数看上去一目了然 ,context上下文和滚动的方向。

来看一下运行效果:

GridLayoutManager

网格式布局,可以设置竖向或者是横向(android:orientation)。

网格的行数和列数,可以通过xml设置:

<org.lucasr.twowayview.widget.TwoWayViewxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:id="@+id/list"android:layout_width="match_parent"android:layout_height="match_parent"style="@style/TwoWayView"app:twowayview_layoutManager="GridLayoutManager"app:twowayview_numColumns="3"app:twowayview_numRows="3" />

也可以通过构造函数去设置:

StaggeredGridLayoutManager

瀑布流式布局,可以设置竖向或者是横向(android:orientation)。
还可以设置瀑布流中的item占用的行数。
StaggeredGridLayoutManager继承GridLayoutManager,用法是一样的。

这里就主要看看怎么设置占用的行数:

StaggeredGridLayoutManager.LayoutParams lp =(StaggeredGridLayoutManager.LayoutParams) itemView.getLayoutParams();
// lp.span 可以设置专用的span数量
lp.span = span;
itemView.setLayoutParams(lp);

在StaggeredGridLayoutManager.LayoutParams对象中有一个span属性可以设置要占用的行数,看一下demo的运行效果:

从图中看到2号占用了两行,就是通过刚才的代码设置的。

SpannableGridLayoutManager

扩展性的网格式布局,可以设置竖向或者是横向(android:orientation)。
SpannableGridLayoutManager继承GridLayoutManager,用法是一样的。
SpannableGridLayoutManager与StaggeredGridLayoutManager的区别在于,SpannableGridLayoutManager的item只能等高。
SpannableGridLayoutManager有点类似于表格,他可以设置合并的行数和列数。

如何来设置合并的行数和列数:

SpannableGridLayoutManager.LayoutParams lp =(SpannableGridLayoutManager.LayoutParams) itemView.getLayoutParams();
lp.rowSpan = 3;
lp.colSpan = 2;
itemView.setLayoutParams(lp);

也是通过SpannableGridLayoutManager.LayoutParams来设置,并且带有rowSpan和colSpan属性,设置合并的行数和列数,看看demo的效果图:

从图中的效果上看,0的rowSpan =2, colSpan = 2,而3的位置 colSpan = 3, rowSpan = 2。

扩展

如何设置间距

DividerItemDecoration

边框性间距,例如demo中使用的就是DividerItemDecoration

final Drawable divider = getResources().getDrawable(R.drawable.divider);
mRecyclerView.addItemDecoration(new DividerItemDecoration(divider));

SpacingItemDecoration

空白行间距。
可以设置verticalSpacing和horizontalSpacing的值。
mRecyclerView.addItemDecoration(new SpacingItemDecoration(10, 10));

item点击事件

RecyclerView是没有提供类似于ListView提供的OnItemClickListener,一般都需要我们自己在adapter中设置OnClickListener来解决这个问题,twoway-view提供了另一种解决办法:

// 获取ItemClickSupport,并绑定指定的RecyclerView
final ItemClickSupport itemClick = ItemClickSupport.addTo(mRecyclerView);
// ItemClickSupport 设置OnItemClickListener
itemClick.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(RecyclerView parent, View child, int position, long id) {}});// ItemClickSupport 设置setOnItemLongClickListener
itemClick.setOnItemLongClickListener(new OnItemLongClickListener() {@Overridepublic boolean onItemLongClick(RecyclerView parent, View child, int position, long id) {return true;}});

目前ItemClickSupport 只支持点击和长按事件,其他的暂不支持。

总结

这样twoway-view这个框架的使用方法介绍就结束了,不得的感叹twoway-view提供的布局方式实在是太方便了,几乎满足了我们各式各样的需求。

如果你也觉得他很棒,就赶紧去下去体验一下吧。有问题和建议欢迎留言。

优秀框架介绍(一):twoway-view,解决你想要的各种列表网格的布局相关推荐

  1. 1. MyBatis框架介绍

    1. MyBatis框架介绍 1. 框架概述 程序开发中框架(framework)往往是对常见功能的封装,可以把框架理解为软件的设计规范或者标准化的组件,好比机械中的螺丝螺母等标准的机械部件 假如你要 ...

  2. 2018年android常用的框架介绍

    转载地址:http://blog.csdn.net/RuingMan/article/details/73546718 http://www.cnblogs.com/jincheng-yangchao ...

  3. android 2018优秀框架整理

    程序员界有个神奇的网站,那就是github,这个网站集合了一大批优秀的开源框架,极大地节省了开发者开发的时间,在这里我进行了一下整理,这样可以使我们在使用到时快速的查找到,希望对大家有所帮助! 1. ...

  4. ❤️六万字《SpringMVC框架介绍—从入门到高级》(建议收藏)❤️

    <SpringMVC框架介绍>(建议收藏) ❤️希望博友给个三连+关注!!! SSM: mybatis + Spring + SpringMVC MVC三层架构 SpringMVC + V ...

  5. Python黑马头条推荐系统第四天 TensorFlow框架介绍和深度学习

    深度学习与推荐系统 6.1 推荐系统与深度学习关联 学习目标 目标 无 应用 无 6.1.1 深度学习到推荐系统 深度学习发展成功与局限 最近几年深度学习的流行,大家一般认为是从2012年 AlexN ...

  6. Django框架介绍及配置

    Django框架介绍及配置 一, WEB框架介绍 1.1Web应用程序处理流程 1.2Web框架程序的意义 用于搭建Web应用程序 免去不同Web应用相同代码部分的重复 1.3 Web应用程序的本质 ...

  7. IOS-常用第三方开源框架介绍

    iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角) 时间:2015-05-06 16:43:34      阅读:533      评论:0      收藏:0      [点我收藏+] ...

  8. 十个前端UI优秀框架包含前端代码下载

    十个前端UI优秀框架 最近需要一些前端框架,于是在网上整理了一些感觉不错的前端框架,有pc端和移动端,为了方便日后自己先记录下来了... Bootstrap 首先说 Bootstrap,估计你也猜到会 ...

  9. android驱动框架介绍

    android驱动框架介绍 了解android驱动框架: 1.方法1--jni调用底层驱动 在android框架中写入c/c++直接调用底层linux驱动,并向上提供jni接口给应用程序: 优点:简单 ...

最新文章

  1. 正则表达式(javascript)
  2. Broadcom NetXtrem II网卡Linux安装指南(转载)
  3. 域服务器怎么修改管理员密码,域服务器更改客户端管理员的密码
  4. .Net Core with 微服务 - 分布式事务 - 2PC、3PC
  5. 投资理财要趁早,基金风险是最小!
  6. 计算机房的分类,雅思词汇分类积累之计算机房
  7. WAMPServer使用
  8. Atitit 图像清晰度 模糊度 检测 识别 评价算法 原理
  9. 10.Linux 高性能服务器编程 --- 信号
  10. centos挂载ntfs文件系统
  11. web聊天类数据库功能表结构如何设计?
  12. 哪些交易2010年可能出问题
  13. Openresty + GeoIP2实现IP归属国家查询
  14. 北京大学计算机同等学力申硕信息平台,北京大学同等学力申硕有哪些专业?
  15. evernote印象笔记导出的enex文件转换markdown文档
  16. 离散数学对学计算机有什么用
  17. win10系统 开启蓝牙服务器,win10系统蓝牙在哪开启?
  18. 形式逻辑(普通逻辑)6:复合判断
  19. 源码奉送:宠物小精灵图鉴
  20. C语言计算圆周长和面积

热门文章

  1. 【CSS】1258- 2022年你不应该错过的CSS新特性
  2. Springboot智能物流拼单组合系统设计与实现
  3. 2017百度校招笔试第一题
  4. android小闹钟课程设计,小闹钟的教学设计
  5. 获取微信用户信息和提现的用户类
  6. Android仿美团外卖点菜联动列表
  7. 树莓派入门(八)之树莓派与A4988 驱动42步进电机
  8. 《计算机网络》课程教学大纲
  9. 文献阅读(63)NIPS2012-ImageNet Classification with Deep Convolutional Neural Networks
  10. mongodb 搜索速度_MongoDB 模糊查询慢的问题 以及相关解决方案的探索