上次讲到自定义圆头像,今天我们给自定义圆头像加个边,首先我们在res-values下,创建一个attres.xml写下如下代码
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="CircleView">
<attr name="border_width" format="dimension"></attr>
<attr name="border_color" format="color"></attr>
</declare-styleable>
</resources>
declare-styleable这个前缀必须这样写,其他随意写
然后在对应的代码中画出来
public class CircleView extends ImageView{
int borderwidth;
int bordercolor;
public CircleView(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray t=context.obtainStyledAttributes(attrs, R.styleable.CircleView);
borderwidth=t.getDimensionPixelSize(R.styleable.CircleView_border_width, 300);
bordercolor=t.getColor(R.styleable.CircleView_border_color, Color.YELLOW);
t.recycle();
}
@Override
public void setImageBitmap(Bitmap bm) {
Bitmap bitmap=Bitmap.createBitmap(bm.getWidth(), bm.getHeight(), Config.ARGB_8888);
Canvas canvas=new Canvas(bitmap);
Paint paint =new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColor(Color.BLACK);
float radius=Math.min(bm.getWidth(), bm.getHeight())/2;
canvas.drawCircle(bm.getWidth()/2, bm.getHeight()/2, radius, paint);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(bm, 0, 0, paint);
paint.setStyle(Style.STROKE);
paint.setStrokeWidth(borderwidth);
paint.setColor(bordercolor);
canvas.drawCircle(bm.getWidth()/2, bm.getHeight()/2, radius-borderwidth/2, paint);
setScaleType(ScaleType.CENTER);
super.setImageBitmap(bitmap);
}
}
然后接着上篇中mainactivity中的代码,就给圆头像加个边了,希望帮到大家