想实现圆角图片那么首先的自定义一个view然后继承自imageview,然后重写里面的ondraw方法:
public class myview extends android.support.v7.widget.AppCompatImageView {
public myview(Context context) {
super(context);
}
public myview(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
}
@Override
protected void onDraw(Canvas canvas) {
//得到宽高
int width = getWidth();
int height = getHeight();
//实例化一个画笔
Paint paint=new Paint();
//拿到本地的一张图片
Bitmap bitmap = BitmapFactory.decodeResource(myview.this.getResources(), R.mipmap.qx4);
//构造渲染器bitmapshader
//参数一:图片 在图片小于要绘制的位置控件的时候 参数二:横着空间空余 参数三:竖着空间空余
//shader的模式tilemode:MIRROR影像 REPEAT平移复制 CLAMP拉伸
BitmapShader shader = new BitmapShader(bitmap, Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);
//给画笔着色
paint.setShader(shader);
//画布进行绘画 1:图画位置中心的x轴位置 2.y轴位置 3.图画的半径 4.画笔
canvas.drawCircle(width/2,height/2,300,paint);
}
}
具体每个参数什么意思都已经在代码中解释过了,那么我们来看一下效果:
这张图片他的宽度够了高度不够,那么这就是他REPEAT平移复制的效果:
MIRROR影像的效果:
CLAMP拉伸的效果: