Android设置文字颜色渐变

项目中用到了很多文字颜色渐变的设计,因此做一下记录。

核心代码如下:

/**
 * 统一文字渐变色设置
 * @param colors 渐变色字符串数组
 * @param positions 渐变色位置数组,可为空
 * @param start 渐变起始点,可为空
 * @param end 渐变结束点,可为空
 * @param tile 渐变模式,默认为CLAMP
 */
fun TextView.setGradientColor(
    colors: Array<String>,
    positions: FloatArray? = null,
    start: PointF? = null,
    end: PointF? = null,
    tile: Shader.TileMode = Shader.TileMode.CLAMP
) {
    post {
        val intColors = colors.map {
            Color.parseColor(it)
        }.toIntArray()
        val gradient = LinearGradient(
            start?.x ?: paddingStart.toFloat(),
            start?.y ?: 0F,
            end?.x ?: measuredWidth.toFloat() - paddingEnd,
            end?.y ?: 0F,
            intColors,
            positions,
            tile
        )
        paint.shader = gradient
        invalidate()
    }
}

对应的xml中TextView如下:

  <androidx.appcompat.widget.AppCompatTextView
  	  android:id="@+id/tvHello"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Hello World"
      android:textColor="#FFC791"
      android:textSize="16dp"
      android:textStyle="bold"/>

如何使用:

 tvHello.setGradientColor(arrayOf("#FFECC6", "#FFC791"))

特别注意:必须设置android:textColor属性颜色值,否则不会产生预期效果

感谢大家的支持,如有错误请指正,如需转载请标明原文出处!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值