package com.hjx.personalcenter.View; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.PorterDuff; import android.graphics.PorterDuffXfermode; import android.graphics.RectF; import android.support.v7.widget.AppCompatImageView; import android.util.AttributeSet; import com.hjx.personalcenter.activity.MyApplication; /** * * @author skg */ public class RoundImageView60dip extends AppCompatImageView { public RoundImageView60dip(Context context, AttributeSet attrs) { super(context, attrs); init(); } public RoundImageView60dip(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(); } public RoundImageView60dip(Context context) { super(context); init(); } private final RectF roundRect = new RectF(); private float rect_adius = dip2px(60); private final Paint maskPaint = new Paint(); private final Paint zonePaint = new Paint(); private void init() { maskPaint.setAntiAlias(true); maskPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); // zonePaint.setAntiAlias(true); zonePaint.setColor(Color.WHITE); // /*float density = getResources().getDisplayMetrics().density; rect_adius = rect_adius * density;*/ } public void setRectAdius(float adius) { rect_adius = adius; invalidate(); } @Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) { super.onLayout(changed, left, top, right, bottom); int w = getWidth(); int h = getHeight(); roundRect.set(0, 0, w, h); } @Override public void draw(Canvas canvas) { canvas.saveLayer(roundRect, zonePaint, Canvas.ALL_SAVE_FLAG); canvas.drawRoundRect(roundRect, rect_adius, rect_adius, zonePaint); // canvas.saveLayer(roundRect, maskPaint, Canvas.ALL_SAVE_FLAG); super.draw(canvas); canvas.restore(); } /** * �����ֻ��ķֱ��ʴ� dp �ĵ�λ ת��Ϊ px(����) */ public static int dip2px(float dpValue) { final float scale = MyApplication.getInstance().getResources() .getDisplayMetrics().density; return (int) (dpValue * scale + 0.5f); } }