我们如何通过编程方式为GradientColor
上的自定义View
创建自定义Canvas
?
Color
的角度需要根据当前时间动态变化。例如,如果当前时间是下午3点,则Gradient
应该从该角度开始,即180度或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种方向(角度)设置为可绘制渐变。