基本信息
源码名称:简单实现圆形ImageView双层边框
源码大小:4.50M
文件格式:.zip
开发语言:Java
更新时间:2019-04-17
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍
简单实现圆形ImageView双层边框

package com.example.test;


import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffXfermode;
import android.graphics.RectF;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.widget.ImageView;

public class RoundImageView extends ImageView {
	private Paint paint;
	private Bitmap bmp;

	public RoundImageView(Context context) {
		super(context);
		// TODO Auto-generated constructor stub
		init();
	}

	public RoundImageView(Context context, AttributeSet attrs) {
		super(context, attrs);
		// TODO Auto-generated constructor stub
		init();
	}

	public RoundImageView(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
	}

	public void init() {
		paint = new Paint();
		paint.setAntiAlias(true);
		paint.setDither(true);
		paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
	}

	@Override
	protected void onDraw(Canvas canvas) {
		int w = getWidth();
		int h = getHeight();
		Drawable drawable = getDrawable();
		int i = canvas.saveLayer(0.0F, 0.0F, w, h, null, 31);
		int j = getWidth();
		int k = getHeight();
		drawable.setBounds(0, 0, j, k);
		drawable.draw(canvas);

		if (bmp == null){
			bmp = createMask();
		}
		canvas.drawBitmap(bmp, 0.0F, 0.0F, paint);
		canvas.restoreToCount(i);

	}

	public Bitmap createMask() {
		int i = getWidth();
		int j = getHeight();
		Bitmap.Config localConfig = Bitmap.Config.ARGB_8888;
		Bitmap localBitmap = Bitmap.createBitmap(i, j, localConfig);
		Canvas localCanvas = new Canvas(localBitmap);
		Paint localPaint = new Paint(1);
		localPaint.setColor(-16777216);
		float f1 = getWidth();
		float f2 = getHeight();
		RectF localRectF = new RectF(0.0F, 0.0F, f1, f2);
		localCanvas.drawOval(localRectF, localPaint);
		return localBitmap;
	}

}