本文介绍: 项目用到了很多文字颜色渐变设计,因此做一下记录属性颜色值,否则不会产生预期效果

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

核心代码如下

/**
 * 统一文字渐变色设置
 * @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"/&gt;

如何使用

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

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

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

原文地址:https://blog.csdn.net/szhupeng/article/details/134685784

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_19409.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注