当前位置: 首页 > article >正文

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属性颜色值,否则不会产生预期效果

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


http://www.kler.cn/a/152521.html

相关文章:

  • 单片机学习12——电容
  • 视频后期效果制作工具Mocha Pro 2022 Plugins mac中文版软件介绍
  • vscode项目推送到git
  • CCF CSP认证 历年题目自练Day50
  • 无限移动的风景 css3 动画 鼠标移入暂停
  • 希尔伯特变换-matlab仿真
  • 虚假IP地址攻击的溯源方法
  • Java实现集合和Excel文件相互转换
  • C++面向对象复习笔记暨备忘录
  • vue中使用a标签下载静态资源文件(比如excel、pdf等)后端不参与
  • 11.30_黑马Redis实战篇分布式锁
  • Vue的Nuxt项目部署在服务器,pm2动态部署和npm run build静态部署
  • 令人疑惑的Promise相关问题
  • 如何做一名合格的班主任
  • Andrioid T 实现充电动画(2)
  • 【.NET Core】语言集成查询(LINQ)详解
  • Redux在React中的使用
  • Kafka的存储机制和可靠性
  • 在线html地址转html文本
  • 马斯克对openAI动荡的看法:Ilya道德感强,他认真了一定是严肃问题