CardView也是一个非常炫酷的控件,一般我们将CardView配合RecyclerView来使用,当然,CardView也可以配合ListView来使用,都是可以的。OK,我们先来看一张CardView+RecyclerView实现的效果图:

每一个item都是圆角的,而且还有阴影的效果,这也就是Google的MD设计规范,有3D的感觉,圆角的效果自己做应该是很容易,但是阴影的效果如果要自己做确实不太容易。好吧,那我们今天就来看看这个效果怎么实现吧!

1.添加依赖

这里我使用了RecyclerView+CardView来实现这样的效果,当然,你如果使用ListView一样是可以实现这样的效果的。OK,我需要下面两个依赖,一个RecyclerView的,一个是CardView的。

compile 'com.android.support:recyclerview-v7:23.1.1'
    compile 'com.android.support:cardview-v7:23.1.1'

2.构造RecyclerView的Adapter

构造RecyclerView的Adapter,那么我先把item的布局贴上来:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"> <android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="108dp"
app:cardCornerRadius="10dp"
app:cardElevation="5dp"> <RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"> <ImageView
android:id="@+id/iv"
android:layout_width="108dp"
android:layout_height="108dp"
android:padding="12dp"
android:scaleType="centerCrop"/> <TextView
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="36dp"
android:layout_toRightOf="@id/iv"
android:gravity="center"
android:padding="3dp"
android:text=""/>
</RelativeLayout>
</android.support.v7.widget.CardView>
</LinearLayout>

大家看到,我在item的布局中使用了CardView节点,表示一个item就是一张卡片,其中app:cardCornerRadius="10dp"属性表示每个item的圆角大小,app:cardElevation="5dp"属性表示海拔高度,其实就是Z轴的高度,设置了Z轴高度之后也就有了阴影效果,当然你也可以设置其他属性,比如app:cardBackgroundColor=""表示每个item的背景颜色。其他的都很简单。

再来看看Adapter:

public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private List<ItemEntity> list;
private Context context;
private LayoutInflater inflater; public MyAdapter(Context context, List<ItemEntity> list) {
this.context = context;
this.list = list;
inflater = LayoutInflater.from(context);
} @Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.item, null);
return new MyViewHolder(view);
} @Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
MyViewHolder holder1 = (MyViewHolder) holder;
ItemEntity itemEntity = list.get(position);
holder1.content.setText(itemEntity.getContent());
holder1.imageView.setImageResource(itemEntity.getImg());
} @Override
public int getItemCount() {
return list.size();
}
private class MyViewHolder extends RecyclerView.ViewHolder{ private ImageView imageView;
private TextView content;
public MyViewHolder(View itemView) {
super(itemView);
imageView = (ImageView) itemView.findViewById(R.id.iv);
content = (TextView) itemView.findViewById(R.id.content);
}
}
}

Adapter中就是普通的RecyclerView 的Adapter,这都很简单,没啥好说的。

3.收拾好RecyclerView并显示

最后,在Activity中初始化数据并交给RecyclerView去显示即可:

public class MainActivity extends AppCompatActivity {

    private List<ItemEntity> list;

    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
initData();
MyAdapter adapter = new MyAdapter(this, list);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(adapter);
} private void initData() {
list = new ArrayList<>();
int[] imgs = new int[]{R.drawable.p1,R.drawable.p2,R.drawable.p3,R.drawable.p4,R.drawable.p5,R.drawable.p6,
R.drawable.p7,R.drawable.p8,R.drawable.p9,R.drawable.p10,R.drawable.p11,R.drawable.p12,R.drawable.p13,
R.drawable.p14,R.drawable.p15};
for (int img : imgs) {
ItemEntity itemEntity = new ItemEntity();
itemEntity.setContent("风光 " + img);
itemEntity.setImg(img);
list.add(itemEntity);
}
}
}

就是这么简单。

以上。

Android5.0之CardView的使用的更多相关文章

  1. 一个Activity掌握Android5.0新控件 (转)

    原文地址:http://blog.csdn.net/lavor_zl/article/details/51279386 谷歌在推出Android5.0的同时推出了一些新控件,Android5.0中最常 ...

  2. android5.0中RecycleView的用法

    最近学习了android5.0中新增的一个组件RecycleView,是用来代替当前的listview开发的,是因为在RecycleView中已经有了viewholder缓存,并且不同的item之间可 ...

  3. Android5.0新控件

    谷歌在推出Android5.0的同时推出了一些新控件,Android5.0中最常用的新控件有下面5种.  1. CardView(卡片视图) CardView顾名思义是卡片视图,它继承FrameLay ...

  4. Android5.0新特性-Material Design

    概述 2014年,Google携Android5.X重装归来.全新的UI设计和更加优化的性能,令开发人员眼前一亮 安装和配置Android5.0开发环境 开发Android还得靠AS.下载地址 htt ...

  5. Android5.0(lollipop)新特性介绍(一)

    今年6月的Google I/O大会上.Android L的初次见面我相信让会让非常多android粉丝有些小激动和小期待.当然作为开发人员的我来说,激动不言而喻,毕竟这是自08年以来改变最大的一个版本 ...

  6. Android5.0和Android6.0适配

    gradle配置项 compileSdkVersion 用哪个 Android SDK 版本编译你的应用.因此我们强烈推荐总是使用最新的 SDK 进行编译.在现有代码上使用新的编译检查可以获得很多好处 ...

  7. android5.0联系人 sort_key改成phonebook_label

    项目中用到了联系人根据字母排序,在android4.0手机上是可以的,但是在android4.4以上的手机排序是乱的,一般字母排序都是根据sort_key这个拼音进行排序,而android5.0这个字 ...

  8. ANdroid5.0不能隐式启动service,必须显示,解决办法,加服务端包名

    Intent intent = new Intent(); intent.setAction("com.viaembedded.veonvif.RemoteService");// ...

  9. android5.0 编译

    android5.0编译需要jdk1.7版本,将来本地可能需要同时维护两套jdk版本,请参考: 在线安装openjdk1.7 sudo apt-get install openjdk-7-jre op ...

随机推荐

  1. udelay、mdelay、ndelay、msleep使用比较说明

    时间单位:    毫秒(ms).微秒 (μs).纳秒(ns).皮秒(ps).飞秒(fs).阿秒.渺秒    1 s = 10^3 ms = 10^6 us = 10^9 ns = 10^12 ps = ...

  2. ADDED_TO_STAGE 多次被调用

    var mca:MovieClip=new MCA(); mca.addEventListener(Event.ADDED_TO_STAGE,addStageEvent); function addS ...

  3. hadoop2.2原理:采样器

    多输入路径-只采一个文件-(MultipleInputs+getsample(conf.getInputFormat) 之前弄采样器,以为已经结束了工作,结果现在又遇到了问题,因为我的输入有两个文件, ...

  4. BZOJ_1778_[Usaco2010_Hol]_Dotp_驱逐猪猡_(期望动态规划+高斯消元+矩阵)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1778 炸弹从1出发,有\(\frac{P}{Q}\)的概率爆炸,如果不爆炸,等概率移动到连通的 ...

  5. [light oj 1328] A Gift from the Setter

    1328 - A Gift from the Setter   Problem setting is somewhat of a cruel task of throwing something at ...

  6. linq中的contains条件

    linq中的contains条件   在sql查询语句中,in 在linq 中用contains,并且contains前面是数组,而后面是列名,如: SELECT distinct BH FROM c ...

  7. C#调用C++的DLL函数另一则(delegate) z

    使用DLLImport进行导入函数的事. C#调用C++的函数其实不止这一种方法, 还有一种方法是用delegate申明函数委托进行调用,这种方法略显麻烦,但是可以进行回调并应用指针. 在C#中,首先 ...

  8. 016专家视图测试脚本开发_utility对象

    utility对象(1)这个例子是:Extendtest使用Extend对象加载DLL,我们可以使用它来丰富windows api函数,能够编写更为强大和灵活的测试代码 实例代码: '声明FindWi ...

  9. 【转】Django+Mysql安装配置详解(Linux)

    参考:http://dmyz.org/archives/110 报错TemplateDoesNotExist at 解决: 新建mysite/articles/article.html文件: 文件内容 ...

  10. IE9以下版本浏览器对HTML5新增标签不识别,导致CSS不起作用的问题

    使用Javascript来使不支持HTML5的浏览器支持HTML标签.目前大多网站采用的这种方式(Bootcss官方例子也是如此). 在<head></head>标签内添加 2 ...