前言:
时隔了一个星期,由于毕业论文的事情一直耽搁了写博客,今天有了点空闲时间把上次的圆形图片继续讲完。前面两篇分别用了BitmapShader和Xfermode方式实现了圆形圆角图片,详情请戳android自定义view-打造圆形ImageView(一)、android自定义view-打造圆形ImageView(二)。好,今天我们用比较简单的drawable加上BitmapShader方式去实现,这样做的好处就是省略了自定义view的onMeasure的过程,看起来挺简洁的。
效果图:
正文:
Step1:继承自drawable
public class RoundDrawableImageView extends Drawable
Step2:在构造方法中初始化画笔等属性:
public RoundDrawableImageView(Bitmap bitmap) {
mBitmap = bitmap;
BitmapShader shader = new BitmapShader(bitmap, TileMode.CLAMP, TileMode.CLAMP);
paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setShader(shader);
}
Step3:重写drawable的几个方法
@Override
public int getIntrinsicWidth() {
return mBitmap.getWidth();
}
@Override
public int getIntrinsicHeight() {
return mBitmap.getHeight();
}
@Override
public void draw(Canvas canvas) {
canvas.drawRoundRect(rec