利用shader来实现
viewBinding.title:这是一个textView
上代码:
viewBinding.title.post {
// 设置字体渐变
val shader = LinearGradient(
0F,
0F,
0F,
viewBinding.title.measuredHeight.toFloat(),
ContextCompat.getColor(context, R.color.start_color),
ContextCompat.getColor(context, R.color.end_color),
Shader.TileMode.CLAMP
)
viewBinding.title.paint.shader = shader
viewBinding.title.text = "hello world"
}
解释:
1. post 的原因是为了拿到 title 这个 textView 的高
2. 前 4 个参数为描述位置,我这里描述的是从上到下
简单写一下:
从上到下:x=x1 y改变
从左到右:x改变 y=y1
看到这两种类型大家应该总结出规律来了吧。
3. 第 5 个参数为开始的颜色,第 6 个参数为结束的颜色
4. 最后一个参数为渐变的效果,我这里选择的就是从开始的颜色渐变到结束的颜色,这里不再赘述,感兴趣的可以去搜下各种渐变的效果
特别注意:
一定要先设置shader,再设置字。如果先设置的字或者在xml里面设置的字,就需要设置完shader之后调用一下触发重新绘制的代码。
viewBinding.title.invalidate()