为画布动态创建渐变颜色

问题描述 投票:0回答:1

我们如何通过编程方式为GradientColor上的自定义View创建自定义Canvas

Color的角度需要根据当前时间动态变化。例如,如果当前时间是下午3点,则Gradient应该从该角度开始,即180度或0度。

android android-canvas
1个回答
0
投票

您可以使用GrandientDrawable实现此目的。请参阅documentation了解更多信息。

这里是可用于获取渐变绘制并将其设置为视图背景的函数。

fun getGradientDrawable(startColor: String, endColor: String, gradientDirection: GradientDirection): GradientDrawable {
    val gradientOrientation: GradientDrawable.Orientation = when (gradientDirection) {
        GradientDirection.TOP_BOTTOM -> GradientDrawable.Orientation.TOP_BOTTOM
        GradientDirection.LEFT_RIGHT -> GradientDrawable.Orientation.LEFT_RIGHT
        GradientDirection.TL_BR -> GradientDrawable.Orientation.TL_BR
        GradientDirection.BL_TR -> GradientDrawable.Orientation.BL_TR
    }
    return GradientDrawable(gradientOrientation, intArrayOf(Color.parseColor(startColor), Color.parseColor(endColor)))
} 

现在,将以下枚举类添加到您的项目中,以定义渐变可绘制方向的4种类型。

enum class GradientDirection {
    @SerializedName("1") TOP_BOTTOM,
    @SerializedName("2") LEFT_RIGHT,
    @SerializedName("3") TL_BR,
    @SerializedName("4") BL_TR
}

但是,您只能将4种方向(角度)设置为可绘制渐变。

© www.soinside.com 2019 - 2024. All rights reserved.