diff --git a/app/src/main/java/com/qhclh/ytzh/utils/widget/XCRoundImageView.java b/app/src/main/java/com/qhclh/ytzh/utils/widget/XCRoundImageView.java new file mode 100644 index 0000000..91eca4f --- /dev/null +++ b/app/src/main/java/com/qhclh/ytzh/utils/widget/XCRoundImageView.java @@ -0,0 +1,71 @@ +package com.qhclh.ytzh.utils.widget; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.PorterDuff; +import android.graphics.PorterDuffXfermode; +import android.graphics.Rect; +import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.Drawable; +import android.support.annotation.Nullable; +import android.util.AttributeSet; +import android.widget.ImageView; + +/** + * Created by ZH on 2017/11/30. + */ + +public class XCRoundImageView extends ImageView{ + private Paint paint; + public XCRoundImageView(Context context) { + super(context); + } + + public XCRoundImageView(Context context, @Nullable AttributeSet attrs) { + super(context, attrs); + } + + public XCRoundImageView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + paint=new Paint(); + } + + @Override + protected void onDraw(Canvas canvas) { + Drawable drawable = getDrawable(); + if (null != drawable) { + Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap(); + Bitmap b = getCircleBitmap(bitmap, 14); + final Rect rectSrc = new Rect(0, 0, b.getWidth(), b.getHeight()); + final Rect rectDest = new Rect(0,0,getWidth(),getHeight()); + paint.reset(); + canvas.drawBitmap(b, rectSrc, rectDest, paint); + + } else { + super.onDraw(canvas); + } + + } + private Bitmap getCircleBitmap(Bitmap bitmap, int pixels) { + Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), + bitmap.getHeight(), Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(output); + + final int color = 0xff424242; + + final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); + paint.setAntiAlias(true); + canvas.drawARGB(0, 0, 0, 0); + paint.setColor(color); + int x = bitmap.getWidth(); + + canvas.drawCircle(x / 2, x / 2, x / 2, paint); + paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); + canvas.drawBitmap(bitmap, rect, rect, paint); + return output; + + + } +}