如何在Android自定义视图中使用线性渐变填充路径
我已经创建了一个Android自定义视图,使用Kotlin绘制了一个星星,该星星将来将用于创建自定义分级栏;因此,我扩展了View类,并覆盖了它的如何在Android自定义视图中使用线性渐变填充路径,android,graphics,kotlin,android-custom-view,linear-gradients,Android,Graphics,Kotlin,Android Custom View,Linear Gradients,我已经创建了一个Android自定义视图,使用Kotlin绘制了一个星星,该星星将来将用于创建自定义分级栏;因此,我扩展了View类,并覆盖了它的draw()方法来绘制一颗星,考虑到Google提供的以下指南: 之后,我尝试用线性渐变填充星形路径,以实现以下帖子中的星形填充效果: 正如您在init中所看到的,绘制对象的着色器属性设置为LinearGradient(0f,0f,0f,height.toFloat(),Color.YELLOW,Color.WHITE,shader.TileMod
draw()
方法来绘制一颗星,考虑到Google提供的以下指南:
之后,我尝试用线性渐变填充星形路径,以实现以下帖子中的星形填充效果:
正如您在init
中所看到的,绘制对象的着色器
属性设置为LinearGradient(0f,0f,0f,height.toFloat(),Color.YELLOW,Color.WHITE,shader.TileMode.MIRROR)
,因此我希望形状填充渐变
但问题是我只得到了一个实心的恒星,而不是梯度,如图所示:
现在的问题是,为什么我得到的是恒星的纯色而不是渐变色
感谢您的关注。此时视图的高度未知:
init {
paint.shader = LinearGradient(0f, 0f, 0f, height.toFloat(), Color.YELLOW, Color.WHITE, Shader.TileMode.MIRROR)
}
而是覆盖onSizeChanged并在其中创建LinearGradient:
override fun onSizeChanged(w: Int, h: Int, oldW: Int, oldH: Int) {
paint.shader = LinearGradient(0f, 0f, 0f, h.toFloat(), Color.YELLOW, Color.WHITE, Shader.TileMode.MIRROR)
}
这回答了你的问题吗?
override fun onSizeChanged(w: Int, h: Int, oldW: Int, oldH: Int) {
paint.shader = LinearGradient(0f, 0f, 0f, h.toFloat(), Color.YELLOW, Color.WHITE, Shader.TileMode.MIRROR)
}