未绘制自定义可绘制对象

Custom Drawable not drawn

我正在尝试创建一个自定义 Drawable 将方形图像转换为圆形图像。图像已转换但未绘制。

我可以看到,如果我在单独的函数中 return RoundedBitmapDrawable,它会显示在 ImageView 中,但如果我希望重写函数 draw完成工作,我什么都没看到

我的class

class RoundImage(context: Context?, bitmap: Bitmap): Drawable() {

    private var dr: RoundedBitmapDrawable

    init {
        // give a round shape
        dr = RoundedBitmapDrawableFactory.create(context!!.resources, bitmap)
        dr.isCircular = true
        dr.cornerRadius = bitmap.width / 2.0f
    }

    override fun draw(canvas: Canvas) {
        // this draws nothing
        dr.draw(canvas)
    }

    override fun setAlpha(alpha: Int) {
        
    }

    override fun setColorFilter(colorFilter: ColorFilter?) {
        
    }

    override fun getOpacity(): Int {
        
    }


    /**
     * This returns a round drawable
     */
    fun getDrawable(): Drawable {
        return dr
    }
}

我试着用

来展示
val roundImage = RoundImage(context, bitmap)
myPicture.setImageDrawable(roundImage)

您还需要重写 onBoundsChange 方法,如下所示:

override fun onBoundsChange(bounds: Rect) {
    dr.bounds = bounds
}

或者,使用 DrawableWrapper 可能是更好的选择。

class RoundImage(context: Context, bitmap: Bitmap) : DrawableWrapper(null) {

    init {
        // give a round shape
        val dr = RoundedBitmapDrawableFactory.create(context.resources, bitmap)
        dr.isCircular = true
        this.drawable = dr
    }

}