使用RoundedBitmapDrawable覆盖onDraw

时间:2014-12-29 04:37:47

标签: android imageview

我尝试使用RoundedBitmapDrawable覆盖我的CustomImageView onDraw方法在Android上创建CircleImageView,但我永远无法显示图像。

我的代码:

@Override
    protected void onDraw(Canvas canvas) {
        Drawable drawable = getDrawable();

        if (drawable == null) {
            return;
        }

        if (getWidth() == 0 || getHeight() == 0) {
            return;
        }
        Bitmap b =  ((BitmapDrawable)drawable).getBitmap() ;
        Bitmap bitmap = b.copy(Bitmap.Config.ARGB_8888, true);

        RoundedBitmapDrawable bmp = getCroppedBitmap(bitmap);
        bmp.setAntiAlias(true);
        bmp.setDither(true);
        bmp.setCornerRadius(Math.min(drawable.getMinimumWidth(),drawable.getMinimumHeight()));
        bmp.draw(canvas);
    }

    private RoundedBitmapDrawable getCroppedBitmap(Bitmap bitmapimg) {
        return RoundedBitmapDrawableFactory.create(getResources(),bitmapimg);
    }

我做错了什么以及我是如何努力使其发挥作用的?

由于

2 个答案:

答案 0 :(得分:1)

其实我忘记了一件简单的事情:

bmp.setBounds(new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()));

感谢您的帮助!

答案 1 :(得分:0)

看起来你需要调用canvas.drawBitmap(位图),不是吗?