目的:动态获取颜色的渐变色 、浅色 、深色
网上看过很多计算的 这里自己也把看过的总结下 不喜欢BB 直接上效果
效果如下


工具类贴出
object ColorUtil {
// 获取更深颜色
fun getDarkerColor(color: Int): Int {
val hsv = FloatArray(3)
Color.colorToHSV(color, hsv) // convert to hsv
// make darker
hsv[1] = hsv[1] + 0.1f // 饱和度更高
hsv[2] = hsv[2] - 0.1f // 明度降低
return Color.HSVToColor(hsv)
}
// 获取更浅的颜色
fun getBrighterColor(color: Int): Int {
val hsv = FloatArray(3)
Color.colorToHSV(color, hsv) // convert to hsv
hsv[1] = hsv[1] - 0.3f // 降低饱和度
hsv[2] = hsv[2] + 0.3f // 提升亮度
return Color.HSVToColor(hsv)
}
/**
*获取颜色渐变
* */
fun getGradient(color:Int):Int{
val R = Color.red(color)
val G = Color.green(color)
val B = Color.blue(color)
val white= Color.parseColor("#ffffff")
val R1 = Color.red(white)
val G1 = Color.green(white)
val B1 = Color.blue(white)
val N=2
val Step=3
val Rend=R+(R1-R)/Step*N
val Gend=G+(G1-G)/Step*N
val Bend=B+(B1-B)/Step*N
return Color.argb(255, Rend, Gend, Bend)
}
}
异同:
getDarkerColor, getBrighterColor通过改变颜色的饱和度 亮度调整 比例可自行调整
getGradient:通过 目标颜色 到 白色 的 RGB值 的平均色实现,N 代表渐变偏移 可自行调整
使用
可搭配安卓 GradientDrawable 使用
val startColor= Color.parseColor("#279E86")
val endColor=ColorUtil.getGradient(startColor)
val colorList= intArrayOf(startColor,endColor)
val gd = GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT, colorList)
imageView.setImageDrawable(gd)
如果有帮到你 别客气 不用谢! 来点实在的就行了 咳咳咳
网友评论