自定义控件图片圆形和边框

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.support.annotation.Nullable;
import android.util.AttributeSet;
import android.widget.ImageView;

/**
 * Created by lenovo on 2017/10/25.
 */

public class CircleImageView extends android.support.v7.widget.AppCompatImageView {
    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);// 设置边框  
        ImageLoader.getInstance().displayImage(bigBean.getData().get(position).getImg(),iv, MyApplication.getOptions());

    }
}  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值