Android5.0之CardView的使用

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的布局贴上来:

[java] view plain copy print?

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:app="http://schemas.android.com/apk/res-auto"
  4. android:layout_width="match_parent"
  5. android:layout_height="match_parent"
  6. android:orientation="vertical">
  7. <android.support.v7.widget.CardView
  8. android:layout_width="match_parent"
  9. android:layout_height="108dp"
  10. app:cardCornerRadius="10dp"
  11. app:cardElevation="5dp">
  12. <RelativeLayout
  13. android:layout_width="match_parent"
  14. android:layout_height="match_parent">
  15. <ImageView
  16. android:id="@+id/iv"
  17. android:layout_width="108dp"
  18. android:layout_height="108dp"
  19. android:padding="12dp"
  20. android:scaleType="centerCrop"/>
  21. <TextView
  22. android:id="@+id/content"
  23. android:layout_width="match_parent"
  24. android:layout_height="wrap_content"
  25. android:layout_centerVertical="true"
  26. android:layout_marginLeft="36dp"
  27. android:layout_toRightOf="@id/iv"
  28. android:gravity="center"
  29. android:padding="3dp"
  30. android:text=""/>
  31. </RelativeLayout>
  32. </android.support.v7.widget.CardView>
  33. </LinearLayout>

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

再来看看Adapter:

[java] view plain copy print?

  1. public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
  2. private List<ItemEntity> list;
  3. private Context context;
  4. private LayoutInflater inflater;
  5. public MyAdapter(Context context, List<ItemEntity> list) {
  6. this.context = context;
  7. this.list = list;
  8. inflater = LayoutInflater.from(context);
  9. }
  10. @Override
  11. public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
  12. View view = inflater.inflate(R.layout.item, null);
  13. return new MyViewHolder(view);
  14. }
  15. @Override
  16. public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
  17. MyViewHolder holder1 = (MyViewHolder) holder;
  18. ItemEntity itemEntity = list.get(position);
  19. holder1.content.setText(itemEntity.getContent());
  20. holder1.imageView.setImageResource(itemEntity.getImg());
  21. }
  22. @Override
  23. public int getItemCount() {
  24. return list.size();
  25. }
  26. private class MyViewHolder extends RecyclerView.ViewHolder{
  27. private ImageView imageView;
  28. private TextView content;
  29. public MyViewHolder(View itemView) {
  30. super(itemView);
  31. imageView = (ImageView) itemView.findViewById(R.id.iv);
  32. content = (TextView) itemView.findViewById(R.id.content);
  33. }
  34. }
  35. }

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

3.收拾好RecyclerView并显示

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

[java] view plain copy print?

  1. public class MainActivity extends AppCompatActivity {
  2. private List<ItemEntity> list;
  3. @Override
  4. protected void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.activity_main);
  7. RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
  8. initData();
  9. MyAdapter adapter = new MyAdapter(this, list);
  10. recyclerView.setLayoutManager(new LinearLayoutManager(this));
  11. recyclerView.setAdapter(adapter);
  12. }
  13. private void initData() {
  14. list = new ArrayList<>();
  15. int[] imgs = new int[]{R.drawable.p1,R.drawable.p2,R.drawable.p3,R.drawable.p4,R.drawable.p5,R.drawable.p6,
  16. R.drawable.p7,R.drawable.p8,R.drawable.p9,R.drawable.p10,R.drawable.p11,R.drawable.p12,R.drawable.p13,
  17. R.drawable.p14,R.drawable.p15};
  18. for (int img : imgs) {
  19. ItemEntity itemEntity = new ItemEntity();
  20. itemEntity.setContent("风光  " + img);
  21. itemEntity.setImg(img);
  22. list.add(itemEntity);
  23. }
  24. }
  25. }

就是这么简单。

以上。

时间: 2024-10-18 14:41:57

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

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

原文地址:http://blog.csdn.net/lavor_zl/article/details/51279386 谷歌在推出Android5.0的同时推出了一些新控件,Android5.0中最常用的新控件有下面5种. 1. CardView(卡片视图) CardView顾名思义是卡片视图,它继承FrameLayout.它是一个带圆角的背景和阴影FrameLayout.CardView被包装为一种布局,并且经常在ListView和RecyclerView的Item布局中,作为容器使用. Ca

Android5.0美不胜收的新特性 Material Design

Google提出了全新的设计规范Material Design,扁平化的设计,加上明亮的色彩,有一种美不胜收的感觉. Material Design翻译过来叫做"材料设计",Material Design是多种元素组合在一起形成一个层次的效果,有主题.新的控件.动画,那么使用Material Design要注意些什么呢?下面来看看使用的注意点: 1.保证兼容性,可以兼容市场占有率高的低版本系统 下面来初步认识一下Material Design的设计规范: 1.使用Material De

Android5.0 新特性学习总结

参考文章: 极客学院 –Material Design 中文版图文教程 几行代码,让你的 APP 变得花俏-Android Design Support Library 代码实验 material design 的android开源代码整理 低版本android上实现Material design应用 Android5.0版本,推出了Material Design的概念,这是在设计上Android的又一大突破.对应的程序实现上就有如 Theme.Material.Light. Theme.Mat

android5.0中RecycleView的用法

最近学习了android5.0中新增的一个组件RecycleView,是用来代替当前的listview开发的,是因为在RecycleView中已经有了viewholder缓存,并且不同的item之间可以设置不同的布局.能非常有效地维护了意见数量有限,滚动大的数据集.使用 RecyclerView当你拥有的数据的集合,它的元素在运行时改变基于用户行为和网络事件的小部件 首先看看RecyclerView的一个小例子: 需要引入:android-support-v7-appcompat.jar and

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

今年6月的Google I/O大会上,Android L的初次见面我相信让会让很多android粉丝有些小激动和小期待,当然作为开发者的我来说,激动不言而喻,毕竟这是自08年以来改变最大的一个版本.新的设计语言(Material Design),5000多个新增api.废话不多说,今天要说的基本都是在Android5.0中很常见,也算是对自己学习的一种记录. 1.CardView 顾名思义,CardView 卡片视图,继承自framelayout,可以通过设置圆角以及阴影来展示带有像卡片一样的效

Android5.0新控件

谷歌在推出Android5.0的同时推出了一些新控件,Android5.0中最常用的新控件有下面5种.  1. CardView(卡片视图) CardView顾名思义是卡片视图,它继承FrameLayout.它是一个带圆角的背景和阴影FrameLayout.CardView被包装为一种布局,并且经常在ListView和RecyclerView的Item布局中,作为容器使用. CardView的使用非常简单: 1 <android.support.v7.widget.CardView 2 andr

Android5.0以上系统的移动网络开关

笔者近期遇到一个非常有意思的bug,贴出来和大家分享下. 那是一个温暖的早晨,阳光晒得人非常舒服.一封bug邮件像一片叶子飘到我的邮箱. 一番交流.笔者确认负责的Widget开关在Android5.0以上系统没有作用.相信非常多做过移动网络开关的朋友都知道.传统的方法是在ConnectivityManager中通过反射两个方法setMobileDataEnabled和getMobileDataEnabled来控制移动网络开和关的. /** * Gets the value of the sett

友情提醒:欲开发android5.0以上应用,请全部更新开发工具至最新

周末帮人完成一个项目,android5.0以上版本,谁知道被开发工具折腾的死去活来.我的开发环境是adt-bundle-windows-x86-20140702.zip版本,也是目前能找到的adt-bundle的最新版本.也升级至最新的adt和platform,但开发5.0的项目还是一堆错误: 错误1:动不动就报AndroidManifest.xml is missing的错误,为了解决这个问题每次都要将.android 和 开发空间里的.metadata,然后重启eclipse,真痛苦啊! 错

Android5.0之后的页面切换动画

Android5.0之后给我们开发者剩了好多的事情,为什么这么说呢?还记得刚开始的时候,Android里面的所有的动画都要我们开发者自己来写,现在不需要了,因为5.0之后自带了好多的动画,比如:按钮点击的动画.页面切换的动画(在android5.0之前想都不敢想的). 今天我着重讲一下页面之间的切换,目前5.0系统自带了三种动画方式:Explode(缩放).Fade(淡入淡出).Slide(滑动进入).下面就这三中方式进行介绍一下. 在讲解之前,现对于动画的方式进行介绍一下.通常,我们进行页面跳