今天用CardView做卡片式设计的时候,给出的UI让做一个蓝色的阴影效果,我找遍了CardView的接口都没有发现修改阴影颜色的方法,于是看了一下源码,发现谷歌把CardView的阴影颜色给写死了。因此写了一个能自定义颜色、阴影宽度、模糊度的CardView,感觉效果还不错,便封装起来做成依赖库发布了。
一个简单的效果图:
首先,在build.gradle文件下加入 maven {url 'https://jitpack.io'}
allprojects {
repositories {
google()
jcenter()
maven {url "https://jitpack.io"}
}
}
然后在dependencies下加入依赖
implementation 'com.github.EHENJOOM:ShadowCardView:1.1.0'
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<com.zhk.shadowcardview.ShadowCardView
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_centerInParent="true"
android:layout_marginLeft="40dp"
android:layout_marginRight="40dp"
app:cornersRadius="15dp"
app:shadowColor="@color/red" />
</RelativeLayout>
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ShadowCardView shadowCardView=findViewById(R.id.shadowCardView);
shadowCardView.setCornersRadius(ShadowCardView.dp2px(this,15))
.setShadowColor(getResources().getColor(R.color.red))
.setShadowOffsetY(ShadowCardView.dp2px(this,5));
}
}
加入命名空间才能使用下面的属性
xmlns:app="http://schemas.android.com/apk/res-auto"
标签名 | 对应属性 |
---|---|
cornersRadius | CardView圆角 |
shadowLeftHeight | 左侧阴影宽度 |
shadowTopHeight | 顶部阴影宽度 |
shadowRightHeight | 右侧阴影宽度 |
shadowBottomHeight | 底部阴影宽度 |
shadowOffsetX | X轴的阴影偏离度 |
shadowOffsetY | Y轴的阴影偏离度 |
cardColor | CardView的颜色 |
shadowColor | 阴影颜色 |
shadowRadius | 阴影模糊度,值越大越模糊 |
方法名 | 对应属性 |
---|---|
setCornersRadius(int) | 设置CardView圆角 |
setShadowLeftHeight(int) | 设置左侧阴影宽度 |
setShadowTopHeight(int) | 设置顶部阴影宽度 |
setShadowRightHeight(int) | 设置右侧阴影宽度 |
setShadowBottomHeight(int) | 设置底部阴影宽度 |
setShadowOffsetX(int) | 设置X轴的阴影偏离度 |
setShadowOffsetY(int) | 设置Y轴的阴影偏离度 |
setCardColor(int) | 设置CardView的颜色 |
setShadowColor(int) | 设置阴影颜色 |
setShadowRadius(int) | 设置阴影模糊度,值越大越模糊 |
后续将会更新更多的属性和方法,有什么想法的小伙伴可以留言。觉得这个控件不错的小伙伴动动手指点个赞呗,也欢迎去项目地址Star。