Pablo
10/23/2024, 8:10 PMKirill Grouchnikov
10/23/2024, 8:39 PMLinearGradientShader
Kirill Grouchnikov
10/23/2024, 8:41 PMShaderBrush
that wraps a LinearGradientShader
. Or DrawScope.drawOutline
with the same brush.Pablo
10/23/2024, 8:48 PMKirill Grouchnikov
10/23/2024, 8:50 PMPablo
10/23/2024, 8:50 PMoverride fun getDrawable(): Drawable {
val sf: ShaderFactory = object : ShaderFactory() {
override fun resize(width: Int, height: Int): Shader {
return LinearGradient(
startX(width), startY(height), endX(width), endY(height), intArrayOf(
color1, color2
),
null, Shader.TileMode.MIRROR
)
}
}
val p = PaintDrawable()
p.shape = RectShape()
p.shaderFactory = sf
fun startX(actualWidth: Int): Float {
when (type) {
Type.SOLID -> return 0f
Type.DEGREE_DOWN_UP, Type.DEGREE_UP_DOWN -> return actualWidth / 2.0f
Type.DEGREE_LEFT_RIGHT -> return 0.0f
Type.DEGREE_RIGHT_LEFT -> return actualWidth.toFloat()
else -> {}
}
return (-1).toFloat()
}
fun startY(actualHeight: Int): Float {
when (type) {
Type.SOLID -> return 0f
Type.DEGREE_DOWN_UP -> return actualHeight.toFloat()
Type.DEGREE_LEFT_RIGHT, Type.DEGREE_RIGHT_LEFT -> return actualHeight / 2.0f
Type.DEGREE_UP_DOWN -> return 0f
else -> {}
}
return (-1).toFloat()
}
fun endX(actualWidth: Int): Float {
when (type) {
Type.SOLID -> return actualWidth.toFloat()
Type.DEGREE_DOWN_UP, Type.DEGREE_UP_DOWN -> return actualWidth / 2.0f
Type.DEGREE_LEFT_RIGHT -> return actualWidth.toFloat()
Type.DEGREE_RIGHT_LEFT -> return 0f
else -> {}
}
return (-1).toFloat()
}
fun endY(actualHeight: Int): Float {
when (type) {
Type.SOLID -> return actualHeight.toFloat()
Type.DEGREE_DOWN_UP -> return 0f
Type.DEGREE_UP_DOWN -> return actualHeight.toFloat()
Type.DEGREE_LEFT_RIGHT, Type.DEGREE_RIGHT_LEFT -> return actualHeight / 2.0f
else -> {}
}
return (-1).toFloat()
}
being of type DEGREE_UP_DOWNKirill Grouchnikov
10/23/2024, 8:54 PMPaintDrawable
to have it respect the size that is being asked to draw. Is your resize
method being called with the right width / height? In any case, this is unlikely to be a Compose question, but rather a more general Android question for SO or Android-specific Slacks.Pablo
10/23/2024, 8:54 PMPablo
10/23/2024, 8:55 PMKirill Grouchnikov
10/23/2024, 9:03 PM