如何在Android中正确绘制圆上的阴影

如何在Android中正确绘制圆上的阴影,android,kotlin,draw,geometry,shadow,Android,Kotlin,Draw,Geometry,Shadow,我在自定义视图中有一个圆,我需要添加一个阴影。视图始终为固定大小,圆应绘制为该大小。我加了一个阴影层。但是,添加到阴影层的值将被截断。我想知道是否有一种方法可以根据给定的视图大小画一个圆并添加阴影 代码 class MockupOval(context: Context) : ConstraintLayout(context){ private val paint: Paint private val rect = RectF(0f, 0f, 0f, 0f) ini

我在自定义视图中有一个圆,我需要添加一个阴影。视图始终为固定大小,圆应绘制为该大小。我加了一个阴影层。但是,添加到阴影层的值将被截断。我想知道是否有一种方法可以根据给定的视图大小画一个圆并添加阴影

代码

class MockupOval(context: Context) : ConstraintLayout(context){

    private val paint: Paint
    private val rect = RectF(0f, 0f, 0f, 0f)

    init {
        setWillNotDraw(false)
        paint = Paint().apply {
            color = ContextCompat.getColor(context, 
                R.color.mockup_rectangle_default_bg)
            style = Paint.Style.FILL
            isAntiAlias = true
            setShadowLayer(10f, 10f, 10f, 0x80000000.toInt())
            setLayerType(View.LAYER_TYPE_SOFTWARE, this)
        }
    }

    override fun onLayout(changed: Boolean, left: Int, top: Int, right: 
                          Int, bottom: Int) {
        super.onLayout(changed, left, top, right, bottom)
        rect.set(0.0f, 0.0f, width.toFloat(), height.toFloat())
        invalidate()
    }

    override fun onDraw(canvas: Canvas?) {
        super.onDraw(canvas)
        canvas?.run {
            drawOval(rect, paint)
        }
    }
}

请参阅此链接,谢谢。我认为缩小圆圈的大小并添加阴影是我可以尝试的一种方法。但我想知道是否有办法保持圆圈的大小,只添加阴影。