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的布局贴上来:
<?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的使用的更多相关文章
- 一个Activity掌握Android5.0新控件 (转)
原文地址:http://blog.csdn.net/lavor_zl/article/details/51279386 谷歌在推出Android5.0的同时推出了一些新控件,Android5.0中最常 ...
- android5.0中RecycleView的用法
最近学习了android5.0中新增的一个组件RecycleView,是用来代替当前的listview开发的,是因为在RecycleView中已经有了viewholder缓存,并且不同的item之间可 ...
- Android5.0新控件
谷歌在推出Android5.0的同时推出了一些新控件,Android5.0中最常用的新控件有下面5种. 1. CardView(卡片视图) CardView顾名思义是卡片视图,它继承FrameLay ...
- Android5.0新特性-Material Design
概述 2014年,Google携Android5.X重装归来.全新的UI设计和更加优化的性能,令开发人员眼前一亮 安装和配置Android5.0开发环境 开发Android还得靠AS.下载地址 htt ...
- Android5.0(lollipop)新特性介绍(一)
今年6月的Google I/O大会上.Android L的初次见面我相信让会让非常多android粉丝有些小激动和小期待.当然作为开发人员的我来说,激动不言而喻,毕竟这是自08年以来改变最大的一个版本 ...
- Android5.0和Android6.0适配
gradle配置项 compileSdkVersion 用哪个 Android SDK 版本编译你的应用.因此我们强烈推荐总是使用最新的 SDK 进行编译.在现有代码上使用新的编译检查可以获得很多好处 ...
- android5.0联系人 sort_key改成phonebook_label
项目中用到了联系人根据字母排序,在android4.0手机上是可以的,但是在android4.4以上的手机排序是乱的,一般字母排序都是根据sort_key这个拼音进行排序,而android5.0这个字 ...
- ANdroid5.0不能隐式启动service,必须显示,解决办法,加服务端包名
Intent intent = new Intent(); intent.setAction("com.viaembedded.veonvif.RemoteService");// ...
- android5.0 编译
android5.0编译需要jdk1.7版本,将来本地可能需要同时维护两套jdk版本,请参考: 在线安装openjdk1.7 sudo apt-get install openjdk-7-jre op ...
随机推荐
- PSTN
PSTN ( Public Switched Telephone Network )定义:公共交换电话网络,一种常用旧式电话系统.即我们日常生活中常用的电话网.工作原理 公共交换电话网络是一种全球语音 ...
- 【HDOJ】2037 今年暑假不AC
qsort排序后DP,水题.注意,数组开大点儿,把时间理解为0~23,开太小会wa. #include <stdio.h> #include <stdlib.h> #defin ...
- 如何计算IP地址及CIDR,子网掩码计算
如何计算IP地址及CIDR 一. IP地址概念 IP地址是一个32位的二进制数,它由网络ID和主机ID两部份组成,用来在网络中唯一的标识的一台计算机.网络ID用来标识计算机所处的网段:主 机ID用来标 ...
- ccleaner的专业版和商业版的注册码
名称:Registered User 密钥:CBB4-FJN4-EPC6-G5P6-QT4C 断网注册
- Shape 与 InlineShape 的区别
Shape 对象代表文档中的图形对象,InlineShape 代表文档中的嵌入式图形对象.所谓嵌入式图形对象,是指将图像作为文字处理,在排版上以文字的方式进行排版. Shape 与 InlineSha ...
- [转]ASP.NET MVC 入门10、Action Filter 与 内置的Filter实现(实例-防盗链)
前一篇中我们已经了解了Action Filter 与 内置的Filter实现,现在我们就来写一个实例.就写一个防盗链的Filter吧. 首先继承自FilterAttribute类同时实现IAction ...
- [King.yue]关于代码调试时的缓存问题的一个解决办法
后台构造数据更改之后,页面数据一直不变,试过各种办法,清空浏览器缓存,停止端口重新运行,关掉程序重新打开,都不可以.最终全部重新生成之后,终于可以正常调试了. 另:调试ASP.NET网站程序的时候,为 ...
- oracle dblink使用
一.dblink介绍 dblink是一个单向的数据库连接,通过设置可以访问其他数据库中的数据跟使用本地数据库中数据一样的感觉,但注意是单向的dblink.例如:A建连B的dblink,A可以访问B的表 ...
- HDOJ-ACM1003(JAVA)
转载声明:原文转自http://www.cnblogs.com/xiezie/p/5502855.html 第一.二次的思路都是穷举: 第一次的实现是用二维数组: import java.util.* ...
- HDU4607 - Park Visit(树的直径)
题目大意 给定一颗树,要求走过其中连续的k个点,使得步数最少 题解 每条边要么经过两次,要么一次,因为我们的目标就是使得走一次的边尽量的多,这样就转换成求树的直径了,求树的直径我用的是两次dfs,先随 ...