Я использую Kotlin и хочу сгенерировать растровое изображение, которое имеет круг с нарисованным на нем радиальным градиентом со следующими цветами [ПРОЗРАЧНЫЙ, КРАСНЫЙ] . Где центральный цвет прозрачный и постепенно становится красным. Но когда я попытался использовать Color.Transparent в качестве прозрачного цвета, он выглядел как прозрачный черный цвет. Я также пробовал использовать прозрачный красный цвет: Color.parseColor ("# 00FF0000") вместо Color.Transparent, но я получил тот же результат. На изображении ниже вы можете увидеть ожидаемый результат, которого я хочу достичь, и фактический результат, который я получаю!
введите описание изображения здесь
Вот исходный код:
fun generateBitmapWithCircle(
radius: Float = 10f, colors: IntArray, stops: FloatArray,
shadowColor: Int = Color.TRANSPARENT, shadowRadius: Float = 1f, backgroundColor: Int = Color.TRANSPARENT
): Bitmap {
val diameter = (radius * 2).toInt()
val bitmap = Bitmap.createBitmap(diameter, diameter, Bitmap.Config.ARGB_8888)
val canvas = Canvas(bitmap)
val paint = Paint().apply {
isAntiAlias = true
}
// background color
if (backgroundColor != Color.TRANSPARENT) {
canvas.drawColor(backgroundColor)
}
// shadow
if (shadowColor != Color.TRANSPARENT) {
paint.setShadowLayer(shadowRadius, 0f, 0f, shadowColor)
}
// fill circle with radial gradient
val radialGradient = RadialGradient(radius, radius, radius, colors, stops, Shader.TileMode.CLAMP)
paint.style = Paint.Style.FILL
paint.shader = radialGradient
paint.alpha = (1f * 255).toInt()
canvas.drawCircle(radius, radius, radius, paint)
return bitmap
}
А вот как сгенерировать растровое изображение:
val bitmap = generateBitmapWithCircle(
radius,
intArrayOf(Color.parseColor("#00FF0000"), Color.RED, Color.RED),
floatArrayOf(0.55f, 0.88f, 1f)
)