在android中如何去自定义一个imageview,在imageview中使用不同的paint去绘制一张图片
时间: 2024-02-12 11:03:41 浏览: 140
Android imageview的自定义动画
要自定义一个 `ImageView` 并使用不同的 `Paint` 绘制图片,需要创建一个自定义的 `ImageView` 类并重写其中的 `onDraw()` 方法。在该方法中,可以使用不同的 `Paint` 对图片进行绘制。以下是一个简单的示例代码:
```java
public class CustomImageView extends ImageView {
private Paint paint1;
private Paint paint2;
public CustomImageView(Context context) {
super(context);
init();
}
public CustomImageView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public CustomImageView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init() {
// 初始化两个不同的 Paint
paint1 = new Paint();
paint1.setColor(Color.RED);
paint1.setStyle(Paint.Style.FILL);
paint2 = new Paint();
paint2.setColor(Color.BLUE);
paint2.setStyle(Paint.Style.STROKE);
paint2.setStrokeWidth(10);
}
@Override
protected void onDraw(Canvas canvas) {
// 获取当前 ImageView 中的 Drawable
Drawable drawable = getDrawable();
// 如果 Drawable 为空,则直接返回
if (drawable == null) {
return;
}
// 获取 Drawable 的宽和高
int width = drawable.getIntrinsicWidth();
int height = drawable.getIntrinsicHeight();
// 将 Drawable 绘制在 Canvas 上
drawable.setBounds(0, 0, width, height);
drawable.draw(canvas);
// 使用不同的 Paint 绘制边框和填充效果
canvas.drawRect(0, 0, width, height, paint1);
canvas.drawRect(10, 10, width - 10, height - 10, paint2);
}
}
```
在这个示例中,我们创建了一个 `CustomImageView` 类,重写了其中的 `onDraw()` 方法,并在该方法中使用两个不同的 `Paint` 绘制了一个边框和一个填充效果。你可以根据自己的需求修改 `Paint` 的属性,实现不同的效果。
阅读全文