包含自定义Shape的ShapeDrawable的setTint?

时间:2019-06-20 11:27:13

标签: android android-drawable

在包含自定义setTint()的{​​{1}}上调用ShapeDrawable似乎对底层形状的颜色没有影响。

CustomShape.kt

Shape

用法

class CustomShape : Shape() {

    private val paint = Paint()
    private val path = Path()

    init {
        paint.isAntiAlias = true
    }

    override fun onResize(width: Float, height: Float) {
        // update path
    }

    override fun draw(canvas: Canvas, paint: Paint) {
        canvas.drawPath(path, this.paint)
    }
}

1 个答案:

答案 0 :(得分:1)

解决方案

使用val shape = CustomShape() val drawable = ShapeDrawable(shape) drawable.setTint(Color.RED) // not working someView.background = drawable 提供的Paint对象,该对象已经应用了反别名标志,并且将尊重您在draw()上调用的任何方法。


问题是我正在创建并使用一个新的ShapeDrawable对象,而不是使用Paint中提供的对象。这样做的合理性是我需要打开抗锯齿功能,并且我想避免在draw()方法中这样做。

另外,我最初是直接在draw中给Paint对象赋予颜色,然后才意识到让CustomShape处理该颜色是更好/必要。