RecyclerView+Cardview学习探索

在support-V7包中引入了很多新的M 控件,其中RccyclerView也是其中一员,它的名字来源于它的工作方式:当一个Item被隐藏起来时候并没有被销毁,当建立新的item时候,组件自动复用item。但与以往经典listview不同的是,RccyclerView直接把viewholder的实现封装起来,因此用户只要实现自己的viewholder即可。

通常一个RccyclerView主要要处理以下几个部分:

LayoutManager :RccyclerView将item布局方式单独放出来供开发者选择,可以把你的item设置成水平或者垂直或者

主要有 LinearLayoutManager(线性)、GridLayoutManager(宫格)、StaggeredGridLayoutManager(瀑布流)

Adapter:适配器,在listview中也有,主要用来提供数据适配

ItemAnimator:负责item的动画播放修改,添加,删除或移动

ItemDecoration:可以用来添加drawings或者改变item的布局,比如添加dividers

ViewHolder:用户实现自己的viewlder即可

点击事件:这个没有提供需要自己写,这个我在后面的例子中会给出说明

再介绍一下Cardview,跟RccyclerView一样也是suooport-v7新控件,可以让我们使用类似卡片的效果,我们还可以设置卡片的圆角和阴影效果,cardview是一个layout继承自frameLayout,因此需要在里面布局其他view控件,下面给出一个cardview常用属性

CardView_cardBackgroundColor 设置背景色 CardView_cardCornerRadius 设置圆角大小 CardView_cardElevation 设置z轴阴影 CardView_cardMaxElevation 设置z轴最大高度值 CardView_cardUseCompatPadding 是否使用CompadPadding CardView_cardPreventCornerOverlap 是否使用PreventCornerOverlap CardView_contentPadding 内容的padding CardView_contentPaddingLeft 内容的左padding CardView_contentPaddingTop 内容的上padding CardView_contentPaddingRight 内容的右padding CardView_contentPaddingBottom 内容的底padding

2、实现一个基本的RecyclerView(结合cardview)

首先在AS中加入依赖

File>project structs,在+号选Library Dependency,加入如下来个依赖库

2.1 首先定义item的bean,主要包括一个主标题和副标题

Item.java

public class Item {private String maintitle;private String subtitle;private boolean active;public Item(String maintitle, String subtitle, boolean active) {this.maintitle = maintitle;this.subtitle = subtitle;this.active = active;}public Item(String maintitle, String subtitle) {this.maintitle = maintitle;this.subtitle = subtitle;}public String getTitle() {return maintitle;}public String getSubtitle() {return subtitle;}public boolean isActive() {return active;}}注:isActive是为后面复杂例子准备的2.2 设置item对应的布局文件

item.xml

<?xml version="1.0" encoding="utf-8"?><android.support.v7.widget.CardViewxmlns:android=""xmlns:app=""android:layout_width="match_parent"android:layout_height="match_parent"app:cardBackgroundColor="#79CDCD"app:cardCornerRadius="5dp"app:cardElevation="5dp"app:cardMaxElevation="8dp"app:cardUseCompatPadding="true"app:contentPadding="10dp"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid:id="@+id/maintitle"style="@style/Base.TextAppearance.AppCompat.Headline"android:layout_width="match_parent"android:layout_height="wrap_content"android:singleLine="true"android:text="Title"android:textColor="#FFFFFF"/><TextViewandroid:id="@+id/subtitle"style="@style/Base.TextAppearance.AppCompat.Subhead"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:singleLine="true"android:text="Subtitle"android:textColor="#FFFFFF"/></LinearLayout></android.support.v7.widget.CardView>其中对cardview的背景颜色,圆角,z轴阴影做了设定,最需要注意的属性是cardUseCompatPadding,它在5.0以下的系统中默认是true,但在5.0系统中默认为false,如果不设置 app:cardUseCompatPadding=”true”的话会造成在5.0系统的Android手机上不能看到阴影效果。2.3 适配器recylerAdapter.java愈想得到,就愈要放手。放手是很难的,但是别无选择。

RecyclerView+Cardview学习探索

相关文章:

你感兴趣的文章:

标签云: