美文网首页
安卓 获取颜色的渐变色 | 获取RGB渐变 | 获取颜色的浅色、

安卓 获取颜色的渐变色 | 获取RGB渐变 | 获取颜色的浅色、

作者: 钱先生的瞎比比 | 来源:发表于2020-04-20 10:46 被阅读0次

目的:动态获取颜色的渐变色 、浅色 、深色

网上看过很多计算的 这里自己也把看过的总结下 不喜欢BB 直接上效果

效果如下


1587350473(1).png 1587350504(1).png

工具类贴出

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)

如果有帮到你 别客气 不用谢! 来点实在的就行了 咳咳咳

相关文章

网友评论

      本文标题:安卓 获取颜色的渐变色 | 获取RGB渐变 | 获取颜色的浅色、

      本文链接:https://www.haomeiwen.com/subject/pvzlihtx.html