Android 5.0特征补充3-RecyclerView、CardView、SwipeRefreshLayout、ToolBar

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的使用

  1. 添加RecyclerView的依赖库:
    这里写图片描述
  2. 在布局中使用RecyclerView
    这里写图片描述
  3. 定义RecyclerView的Adapter
    这里写图片描述
    这里写图片描述
  4. 给RecyclerView设置LayoutManager
    这里写图片描述
  5. 给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的向下兼容

  1. 为了向下兼容,要使用 V7包下的 Toolbar;
  2. 使用setSupportActionBar()方法而不是setActionBar()方法来替代ActionBar
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我很乐意回答您的问题。首先,RecyclerView 是一个强大的视图组件,用于显示大量数据集合。它可以高效地管理和显示列表、网格和瀑布流等多种样式的布局。而 CardView 则是一个 Material Design 风格的容器视图,用于显示单个数据项的卡片式布局。 在 Android 中使用 RecyclerViewCardView 需要先在 build.gradle 文件中添加依赖库: ```groovy dependencies { implementation 'com.android.support:recyclerview-v7:28.0.0' implementation 'com.android.support:cardview-v7:28.0.0' } ``` 接下来,在布局文件中声明 RecyclerViewCardView: ```xml <android.support.v7.widget.RecyclerView android:id="@+id/recyclerview" android:layout_width="match_parent" android:layout_height="match_parent" android:clipToPadding="false" android:padding="@dimen/default_padding" android:scrollbarStyle="outsideOverlay" android:scrollbars="vertical" /> <android.support.v7.widget.CardView android:id="@+id/cardview" android:layout_width="match_parent" android:layout_height="wrap_content" app:cardCornerRadius="@dimen/default_corner_radius" app:cardElevation="@dimen/default_elevation" app:cardUseCompatPadding="true"> <!-- 在 CardView 中添加需要显示的内容 --> </android.support.v7.widget.CardView> ``` 最后,在代码中使用 RecyclerViewCardView: ```java RecyclerView recyclerView = findViewById(R.id.recyclerview); recyclerView.setLayoutManager(new LinearLayoutManager(this)); recyclerView.setAdapter(new MyAdapter()); CardView cardView = findViewById(R.id.cardview); cardView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 处理点击事件 } }); ``` 其中,MyAdapter 是一个自定义的适配器类,用于管理和显示数据集合。在该类中,需要实现 onCreateViewHolder、onBindViewHolder 和 getItemCount 等方法,以便正确地显示数据项。 总之,RecyclerViewCardViewAndroid 中常用的界面组件,它们可以帮助我们高效地显示列表和卡片式布局。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值