使用cardCornerRadius就可以直接实现圆角效果,代码如下
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:cardBackgroundColor="@color/gray_d9d9d9"
app:contentPadding="1px"
app:cardElevation="1px"
app:cardCornerRadius="4dp">
我们跟一下代码会发现,圆角本质上是利用RoundRectDrawable来实现的,
进一步,是在onDraw中,调用了Canvas的drawRoundReact来实现的
@Override
public void draw(Canvas canvas) {
final Paint paint = mPaint;
final boolean clearColorFilter;
if (mTintFilter != null && paint.getColorFilter() == null) {
paint.setColorFilter(mTintFilter);
clearColorFilter = true;
} else {
clearColorFilter = false;
}
// 实现圆角
canvas.drawRoundRect(mBoundsF, mRadius, mRadius, paint);
if (clearColorFilter) {
paint.setColorFilter(null);
}
}