介绍
CardView
是Android 5.0
之后推出的布局效果,它可以实现布局的圆角效果,阴影效果。
CardView
是继承FrameLayout
实现的布局对象。所以我们可以将它当做一个layout
使用。
例如下面这种列表的布局样式,可以说CardView
是最佳选择方案了。
导入
implementation 'androidx.cardview:cardview:1.0.0'
xml布局配置说明
cardBackgroundColor 设置背景颜色
cardCornerRadius 设置圆角边大小
cardElevation 阴影大小- 设置为0代表没有阴影
cardMaxElevation 最大的阴影大小
cardPreventCornerOverlap 在v20和之前的版本中添加内边距,这个属性是为了防止卡片内容和边角的重叠
cardUseCompatPadding 设置内边距,v21+的版本和之前的版本仍旧具有一样的计算方式
contentPadding 内边距
contentPaddingBottom 底部边距
contentPaddingLeft 左侧边距
contentPaddingRight 右侧边距
contentPaddingTop 顶部边距
简单示例如下:
例如,我们给CardView
中添加图片。它会自动将图片切割为圆角。
上面是通过给ImageView 添加背景颜色,可以看到右侧的效果图中,自动出现了圆角。
在API 21以前的版本中使用会有适配问题,但是现在估计不会还有api 21以前的手机需要适配了。那种情况可以忽略不计。
我们如果给ImageView 添加图片也会被CardView 自动切成圆角效果
即使是来自网络的图片,通过src配置的图片也会被切成圆角显示。
点击动画
我们如果要定义CardView 的点击动画效果,例如放大等可以通过stateListAnimator
进行定义:
下面就是使用objectAnimator
创建的一个动画效果。
android:stateListAnimator="@anim/my_cardview"
//我们定义的my_cardview
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_enabled="true"
android:state_pressed="true">
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="translationZ"
android:valueTo="2dp"
android:valueType="floatType" />
</item>
<item>
<objectAnimator
android:duration="@android:integer/config_shortAnimTime"
android:propertyName="translationZ"
android:valueTo="0dp"
android:valueType="floatType" />
</item>
</selector>
而如果CardView
中的UI
效果复杂,我们可以在CardView
下添加其他的Layout
布局进行填充。一样不会影响到我们的圆角特性和阴影特性。
评论区