Android CardView使用详解
转至:http://www.w2bc.com/Article/36229
Android5.0中向我们介绍了一个全新的控件–CardView,从本质上看,可以将CardView看做是FrameLayout在自身之上添加了圆角和阴影效果。请注意:CardView被包装为一种布局,并且经常在ListView和RecyclerView的Item布局中,作为一种容器使用。
CardView应该被使用在显示层次性的内容时;在显示列表或网格时更应该被选择,因为这些边缘可以使得用户更容易去区分这些内容。
使用CardView
首先,假设你的布局如同下面的形式:
<FrameLayout
xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"><!-- Main Content View --><RelativeLayout>...</RelativeLayout>
</FrameLayout>
为了使用上面的布局方式来创建一个卡片,首先你需要导入支持的依赖库(android-support-v7-cardview的jar包)在你的build.gradle文件中。
dependencies {...compile 'com.android.support:cardview-v7:21.0.2'
}
现在将FrameLayout替换为CardView,
<android.support.v7.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"><!-- Main Content View --><RelativeLayout>...</RelativeLayout>
</android.support.v7.widget.CardView>
就是这样!使用依赖库能够保证你的程序稳定的兼容之前的版本;尽管在AndroidL和之前的Android版本中对其处理方式有所不同。
定制CardView
CardView提供了一个默认的elevation(意为CardView的Z轴阴影)和圆角角度,所以每一个卡片都能够在不同的设备上保持相同的外观。然而,你也可以根据自己的需求去定制这些值。
<android.support.v7.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"card_view:cardCornerRadius="8dp"card_view:cardElevation="8dp"><!-- Main Content View --><RelativeLayout>...</RelativeLayout>
</android.support.v7.widget.CardView>
注意:cardElevation属性被用来决定阴影的大小以及柔和度,以至于可以逼真的模拟出对于深度效果的描述。
添加波纹点击效果
默认情况,CardView是不可点击的,并且没有任何的触摸反馈效果。触摸反馈动画在用户点击CardView时可以给用户以视觉上的反馈。为了实现这种行为,你必须提供一下属性:
<android.support.v7.widget.CardView...android:clickable="true"android:foreground="?android:attr/selectableItemBackground">...
</android.support.v7.widget.CardView>
使用android:foreground=”?android:attr/selectableItemBackground”可以使CardView点击产生波纹的效果,有触摸点向外扩散。
对更早的版本的支持
在AndroidL之前的设备上,CardView为了支持圆角的效果加上了padding,圆角剪裁操作可以算是很昂贵的操作。相似的,对阴影效果来说,在AndroidL之前,也会提供padding去绘制阴影面积,这些内容的padding是和elevation属性相关的,按照文档:
padding值为:
左右两边的值为:maxCardElevation + (1 - cos45) * cornerRadius
上下两边的值为:maxCardElevation * 1.5 + (1 - cos45) * cornerRadius
因此,如果你需要给自己的内容加上padding的话,需要使用新的属性:card_view:contentPadding
相似的,如果改变CardView的背景,也需要使用新的属性:card_view:cardBackgroundColor
原文出处
原文来自:Using the CardView
Android CardView使用详解相关推荐
- 《Android游戏开发详解》——第1章,第1.6节函数(在Java中称为“方法”更好)...
本节书摘来自异步社区<Android游戏开发详解>一书中的第1章,第1.6节函数(在Java中称为"方法"更好),作者 [美]Jonathan S. Harbour,更 ...
- JMessage Android 端开发详解
JMessage Android 端开发详解 目前越来越多的应用会需要集成即时通讯功能,这里就为大家详细讲一下如何通过集成 JMessage 来为你的 App 增加即时通讯功能. 首先,一个最基础的 ...
- 《Java和Android开发实战详解》——2.5节良好的Java程序代码编写风格
本节书摘来自异步社区<Java和Android开发实战详解>一书中的第2章,第2.5节良好的Java程序代码编写风格,作者 陈会安,更多章节内容可以访问云栖社区"异步社区&quo ...
- Android事件流程详解
Android事件流程详解 网络上有不少博客讲述了android的事件分发机制和处理流程机制,但是看过千遍,总还是觉得有些迷迷糊糊,因此特地抽出一天事件来亲测下,向像我一样的广大入门程序员详细讲述an ...
- Android Studio 插件开发详解二:工具类
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78112856 本文出自[赵彦军的博客] 在插件开发过程中,我们按照开发一个正式的项 ...
- 《Android游戏开发详解》一2.16 区分类和对象
本节书摘来异步社区<Android游戏开发详解>一书中的第2章,第2.16节,作者: [美]Jonathan S. Harbour 译者: 李强 责编: 陈冀康,更多章节内容可以访问云栖社 ...
- Android Framework系统服务详解
Android Framework系统服务详解 操作环境 系统:Linux (Ubuntu 12.04) 平台:高通 Android版本:5.1 PS: 符号...为省略N条代码 一.大致原理分析 A ...
- android屏幕适配详解
android屏幕适配详解 官方地址:http://developer.android.com/guide/practices/screens_support.html 一.关于布局适配建议 1.不要 ...
- Android LiveData组件详解以及LiveDataBus
转载请标明出处:https://blog.csdn.net/zhaoyanjun6/article/details/99749323 本文出自[赵彦军的博客] 一.LiveData简介 LiveDat ...
最新文章
- 滴滴ElasticSearch平台跨版本升级以及平台重构之路
- java get key_java – KeyStore getKey()在Android中返回null
- spark的三种运行模式以及yarn-client和yarn-cluster在提交命令上的区别
- PS5运行Linux,索尼发布最新驱动!PS5手柄现在已支持Linux系统
- java注释指导手册
- 计算机应用基础实验报告册,大学计算机应用基础实验报告册 - 2010版 - (1)
- 证明您履历表经验的防弹五步法
- 微信小程序--几个常用标签
- git大坑---cleanup
- 红米k50电竞版和红米k40游戏增强版哪个好 参数对比
- 电脑上可以连接网线可以上网,但是WiFi没有了
- 【如何处理Windows 8 系统自带微软拼音简捷输入法无法删除】
- 关键点检测——68点图例
- 无人巴士和无人出租车都能用的L4自动驾驶通用硬件方案
- (转)深入理解最强桌面地图控件GMAP.NET --- SOSO地图
- 释放sqlite文件占用的多余空间
- 02-蘑菇街爬虫mw-sign参数破解
- matlab两横排合并,Matlab设置Legend横排、分块
- Codeforces Round#539(Div. 2)
- 入门PCB设计之AD9电路板设计_杜洋工作室_学习笔记
热门文章
- 我的浏览器 My Brower
- 完整的高性能PHP应用服务器appserver
- Hinton曾授课,斯坦福首个Transformers专题讲座视频放出,NLP、CV和RL无所不包
- Golang 在linux中新建用户
- Python hasattr()笔记(可执行文件路径获取)
- 钟南山腾讯团队用ML算法验证:这三种防疫措施效果最显著,严格防控要趁早,7至14天起效...
- Debian11安装搜狗输入法
- Spark数据分析之第5课
- 【LaTeX教程】九.Latex常见数学公式模板
- 简单谈C++为什么是面向对象的程序设计