天天看點

自定義控件---帶邊框的圓形圖檔

效果:

自定義控件---帶邊框的圓形圖檔
自定義控件---帶邊框的圓形圖檔
package com.zyh.cricleimageview;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Path;
import android.util.AttributeSet;
import android.widget.ImageView;

/**
 * 圓角圖檔
 * @author zyh
 */
public class CircleImageView extends ImageView {

	public CircleImageView(Context context) {
		super(context);
	}

	public CircleImageView(Context context, AttributeSet attrs) {
		super(context, attrs);
	}

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

	private int bWidth = 10;// 邊框寬度
	private int bColor = Color.WHITE;// 邊框顔色

	/**
	 * 設定圓形圖檔的邊框顔色
	 * @param color
	 */
	public void setBorderColor(int color) {
		bColor = color;
	}

	/**
	 * 設定圓形圖檔的邊框寬度
	 * @param
	 */
	public void setBorderWidth(int width) {
		bWidth = width;
	}

	/**
	 * 設定圓形圖檔的邊框寬度和顔色
	 * @param
	 */
	public void setBorderWidth(int width, int color) {
		bWidth = width;
		bColor = color;
	}

	@Override
	public void setImageBitmap(Bitmap bm) {

		int d = Math.min(bm.getWidth(), bm.getHeight());// 或得圓直徑
		Bitmap dest = Bitmap.createBitmap(d, d, bm.getConfig());// 建立一個副本
		// 畫邊框
		Canvas c = new Canvas(dest);
		Paint paint = new Paint();
		paint.setColor(bColor); // 邊框顔色
		paint.setAntiAlias(true);// 設定抗鋸齒
		c.drawCircle(d / 2, d / 2, d / 2, paint);
		// 畫圓
		Path path = new Path();
		path.addCircle(d / 2, d / 2, d / 2 - bWidth, Path.Direction.CW);
		c.clipPath(path); // 裁剪區域

		Matrix matrix = new Matrix();// 不縮放
		c.drawBitmap(bm, matrix, paint);// 把圖畫上去
		super.setImageBitmap(dest);
	}

}
           

使用 

public class MainActivity extends Activity {

	private CircleImageView iv;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		iv = (CircleImageView) findViewById(R.id.iv);
		iv.setBorderWidth(15, Color.BLUE);// 設定邊框
		iv.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.photo)); // 設定圖檔
	}
}