У меня есть круг в пользовательском представлении, и мне нужно добавить тень.Представление всегда имеет фиксированный размер, и круг должен быть нарисован до этого размера.Я добавил теневик.Однако значение, добавленное к теневому слою, усекается.Мне интересно, есть ли способ нарисовать круг с заданным размером представления и добавить тень.
CODE
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)
}
}
}