自定义图片圆角背景

public class CircleDisplayer extends RoundedBitmapDisplayer {
    // 构造函数
    public CircleDisplayer() {
        super(0);
    }

    // 显示位图
    @Override
    public void display(Bitmap bitmap, ImageAware imageAware,
            LoadedFrom loadedFrom) {
        imageAware.setImageDrawable(new CircleDrawable(bitmap, margin));
    }

    public static class CircleDrawable extends Drawable {
        private final int margin;
        private final RectF mRect = new RectF();
        private final BitmapShader bitmapShader;
        private final Paint paint;
        private RectF mBitmapRect;

        public CircleDrawable(Bitmap bitmap, int margin) {
            this.margin = 0;
            // 创建着色器
            bitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP,
                    Shader.TileMode.CLAMP);
            mBitmapRect = new RectF(margin, margin, bitmap.getWidth() - margin,
                    bitmap.getHeight() - margin);
            // 设置画笔
            paint = new Paint();
            paint.setAntiAlias(true);
            paint.setShader(bitmapShader);
        }

        // 画圆,覆盖原来的位图
        @Override
        protected void onBoundsChange(Rect bounds) {
            super.onBoundsChange(bounds);
            mRect.set(margin, margin, bounds.width() - margin, bounds.height()
                    - margin);

            // 调整位图,设置该矩阵,转换映射源矩形和目的矩形
            Matrix shaderMatrix = new Matrix();
            shaderMatrix.setRectToRect(mBitmapRect, mRect,
                    Matrix.ScaleToFit.FILL);
            // 设置着色器矩阵
            bitmapShader.setLocalMatrix(shaderMatrix);
        }

        // 画出其边界(通过设置的setBounds)
        @Override
        public void draw(Canvas canvas) {
            canvas.drawRoundRect(mRect, mRect.width() / 2, mRect.height() / 2,
                    paint);
        }

        /**
         * 返回此绘制对象的不透明度/透明度 ,返回的值是抽象的格式常数的PixelFormat之一:未知,半透明,透明或不透明
         * */
        @Override
        public int getOpacity() {
            // 半透明
            return PixelFormat.TRANSLUCENT;
        }

        // 设置透明度
        @Override
        public void setAlpha(int alpha) {
            paint.setAlpha(alpha);
        }

        // 彩色滤光片(通过设置setColorFilter)
        @Override
        public void setColorFilter(ColorFilter cf) {
            paint.setColorFilter(cf);
        }
    }

}

设定显示图片参数

DisplayImageOptions headImgOptions = new DisplayImageOptions.Builder()
// .showImageOnLoading(R.drawable.head_portrait)// 下载时
      .showImageForEmptyUri(R.drawable.default_avatar) // 设置图片Uri为空或是错误的时候显示的图片
      .showImageOnFail(R.drawable.default_avatar) // 设置图片加载或解码过程中发生错误显示的图片
      .cacheInMemory(false) // 设置下载的图片是否缓存在内存中
      .cacheOnDisk(true) // 设置下载的图片是否缓存在SD卡中
      .displayer(new CircleDisplayer()) // 设置成圆角图片 弧度
      .build();

显示加载图片

ImageLoader.getInstance().displayImage(imgurl, imageView.holder,
      headImgOptions);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值