如何使自定义视图显示阴影

时间:2019-11-22 05:14:02

标签: android android-canvas android-custom-view android-drawable

我有自定义视图,可以将其裁剪到左右边缘。在没有高程的情况下可以正常工作,但是当有高程时,阴影无法正确显示,如下图所示。我该怎么做才能正确显示阴影。

这是我的代码。

override fun draw(canvas: Canvas?) {

    leftClipPath.arcTo(
        RectF(-50f, (height/2).toFloat() - 50f, 50f, (height/2).toFloat() + 50f),
        270f, 180f
    )

    rightClipPath.arcTo(
        RectF(width.toFloat() -50f, (height/2).toFloat() - 50f, width.toFloat() + 50f, (height/2).toFloat() + 50f),
        90f, 180f
    )

    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        canvas?.clipOutPath(leftClipPath)
        canvas?.clipOutPath(rightClipPath)
    } else {
        canvas?.clipPath(leftClipPath, Region.Op.DIFFERENCE)
        canvas?.clipPath(rightClipPath, Region.Op.DIFFERENCE)
    }

    super.draw(canvas)
}

With Elevation

具有海拔的CustomView。

enter image description here

不带高程的CustomView。

0 个答案:

没有答案