android 用java 画Drawable,并在该Drawable 的draw()方法中画两个宽度高度自适应的圆角卡片
时间: 2024-10-03 18:03:43 浏览: 19
在Android中,如果你想要使用Java代码动态地绘制Drawable并包含两个自适应宽高、圆角的卡片,你需要创建一个`ShapeDrawable`或者`Canvas`实例。这里是一个简单的例子:
```java
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.graphics.drawable.Drawable;
import android.view.View;
public class CustomDrawableView extends View {
private static final float CORNER_RADIUS = 5f; // 圆角半径
private Paint paint = new Paint();
public CustomDrawableView(Context context) {
super(context);
initPaint();
}
public CustomDrawableView(Context context, @Nullable AttributeSet attrs) {
this(context, attrs, 0);
}
public CustomDrawableView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initPaint();
}
private void initPaint() {
paint.setAntiAlias(true); // 使用抗锯齿
paint.setStyle(Paint.Style.FILL); // 填充模式
paint.setColor(Color.WHITE); // 设置初始颜色
}
@Override
protected void onDraw(Canvas canvas) {
// 绘制上部卡片
RectF topCardRect = new RectF(0, 0, getWidth(), getHeight() / 2 - getPaddingTop());
canvas.drawRoundRect(topCardRect, CORNER_RADIUS, CORNER_RADIUS, paint);
// 绘制下部卡片,由于高度自适应,我们在这里不需要指定具体高度
RectF bottomCardRect = new RectF(0, getHeight() / 2 + getPaddingTop(), getWidth(), getHeight() - getPaddingBottom());
canvas.drawRoundRect(bottomCardRect, CORNER_RADIUS, CORNER_RADIUS, paint);
}
}
```
在这个示例中,我们创建了一个名为`CustomDrawableView`的自定义View,它的`onDraw()`方法会在每次视图被绘制时调用。每个圆角卡片的部分使用了`RectF`来计算其位置和大小,并通过`canvas.drawRoundRect()`函数来绘制。
阅读全文