RecyclerView
RecyclerView介绍
该控件用于在有限的窗口中展示大量数据集,可以用于替代ListView、GridView,通过设置RecyclerView的LayoutManager可以轻松的通过这个控件实现ListView,GirdView,瀑布流等效果。
RecyclerView.LayoutManager:
- LinearLayoutManager 线性管理器,支持横向、纵向。- 实现ListView的布局
- GridLayoutManager 网格布局管理器 - 实现GridView的布局
- StaggeredGridLayoutManager 瀑布流式布局管理器
RecyclerView.Adapter介绍
普通的ListView的Adapter的抽取
普通的ListView的Adapter的定义步骤:
1. 继承BaseAdapter
2. 必须重写getCount和getView方法
3. 在重写getView方法的时候,为了优化ListView,需要:
- 复用convertView
- 使用ViewHolder
接下来我们来看看我们正常的BaseAdapter:
既然所有的getView方法都需要构建ViewHolder,进行findViewById操作,并为ViewHolder中的控件赋值,那么我们可以把构建ViewHolder和赋值的操作抽取成方法:
每个ListView的Adapter的getView方法中的ViewHolder和设置值的内容都是不一样的,那么我们可以抽取一个父类出来:
- 既然不知道ViewHolder是谁,由子类决定,那么就用一个泛型T来代表ViewHolder;
- 既然不知道创建ViewHolder的具体方法和设置值的具体方法,那么就将这两个方法做成抽象的,由子类去实现。
那么,实现了这个父类的子类只需关注自己需要重写的方法即可。
RecyclerView的Adapter
RecyclerView的Adapter其实也是遵循这个思想去做的抽取,它的使用步骤:
1. 继承自RecyclerView.Adapter,指定ViewHolder的类型
2. 重写getItemCount方法,返回要展示的数据量
3. 自定义一个ViewHolder,继承自RecyclerView.ViewHolder
4. 重写onCreateViewHolder方法,返回被创建的ViewHolder对象
5. 重写onBindViewHolder方法,绑定要展示的数据
RecyclerView的使用
- 添加RecyclerView的依赖库:
- 在布局中使用RecyclerView
- 定义RecyclerView的Adapter
- 给RecyclerView设置LayoutManager
- 给RecyclerView设置Adapter
CardView的使用
CardView和Linearlayout、Framelayout一样都是ViewGroup,即其他控件的容器。
CardView继承于Framelayout,所以Framelayout的属性他都有,同时CardView还有几个特殊的属性:
- 在API21(Android L)等级以上拥有属性elevation,意为CardView的Z轴阴影,只有在Android 5.0有效。只能通过xml中的elevation属性指定;
- cardBackgroundColor:意为CardView的卡片颜色,只能通过xml的cardBackgroundColor属性进行指定;
- cardConerRadius:意为CardView卡片的四角圆角矩形程度,单位dimen(dp px sp),可以通过xml指定,也可以通过代码中的setRadius指定。
使用步骤:
1. 添加依赖库
2. 在xml中使用CardView(直接作为一个容器使用,包裹要展示的内容)
3. 运行效果
SwipeRefreshLayout的使用
SwipeRefreshLayout是Google提供的下拉刷新控件,位于support-v4包下,其实很早以前就提供了这个控件,但是之前这个控件的样式一直是彩色横线,5.0之后变为了转圈的圆形进度条。
旧版样式:
新版样式:
主要方法:
- setOnRefreshListener(OnRefreshListener): 为布局添加一个Listener
- setRefreshing(boolean): 显示或隐藏刷新进度条
- isRefreshing(): 检查是否处于刷新状态
- setColorScheme(): 设置进度条的颜色主题,最多能设置四种
使用步骤:
1. 在布局文件中使用SwipeRefreshLayout,作为容器套到外层即可
2. 在代码中设置SwipeRefreshLayout
ToolBar的使用
Toolbar是应用的内容的标准工具栏,可以说是Actionbar的升级版,用来替代ActionBar。
相比Actionbar Toolbar最明显的一点就是变得很自由,可随处放置,因为它是作为一个ViewGroup来定义使用的。
一般把ToolBar放到页面最上面,有需要你可以把它放到中间、底部或其它位置的,可见ToolBar的自由度是很高的。
使用前提:
若想使用ToolBar替代ActionBar,需要设置主题为NoActionBar相关,或者通过代码设置去掉ActionBar,否则会报错。
使用步骤:
1. 设置主题为NoActionBar的主题,或者在代码中配置:
2. 设置Toolbar的样式
3. 使用ToolBar替换ActionBar
ToolBar显示Menu
ActionBar上的Menu菜单,在ToolBar上是兼容的,比如在Activity里添加Menu:
Menu中只放一个Item:
UI效果展示:
ToolBar的向下兼容
- 为了向下兼容,要使用 V7包下的 Toolbar;
- 使用setSupportActionBar()方法而不是setActionBar()方法来替代ActionBar