先放张效果图镇楼
直接进入正题
实现文字的渐变效果其实很简单
LinearGradient linearGradient = new LinearGradient(0, 0, 0, textview.getHeight(), new int[]{Color.parseColor("#FF0000")
, Color.parseColor("#FFFF00")}, new float[]{0, 1}, Shader.TileMode.CLAMP);
textview.getPaint().setShader(linearGradient);
就这么简单 主要就是配置关键类LinearGradient
然后TextView getPaint().setShader()
实例化 LinearGradient
public LinearGradient(float x0, float y0, float x1, float y1, int[] colors, float[] positions, android.graphics.Shader.TileMode tile)
第一个参数为线性起点的x坐标
第二个参数为线性起点的y坐标
第三个参数为线性终点的x坐标
第四个参数为线性终点的y坐标
第五个参数为实现渐变效果的颜色的组合
第六个参数为前面的颜色组合中的各颜色在渐变中占据的位置
第七个参数为渲染器平铺的模式
第六个参数 比如float[] 有三个元素 {0,0.4f,1} 表示第一个颜色从0开始
渐变到0.4f(40%)的地方 (0.4f 处表示第二个颜色) 然后再渐变到1这个地方
(1 处表示第三个颜色)
第七个参数有三种模式
1.CLAMP
2.REPEAT(水平和垂直两个方向上重复,相邻图像没有间隙)
4.MIRROR(以镜像的方式在水平和垂直两个方向上重复,相邻图像有间隙)
第一二三四个参数 可以设置渐变为从左到右 从右到左 从上到下 从下到上 从左上到右下等
三种分别对应效果图的第二三四种情况
LinearGradient linearGradient = new LinearGradient(0, 0, 0, tv0.getHeight(), new int[]{Color.parseColor("#FF0000")
, Color.parseColor("#FFFF00")}, new float[]{0, 1}, Shader.TileMode.CLAMP);
tv0.getPaint().setShader(linearGradient);
LinearGradient linearGradient = new LinearGradient(0, 0, tv1.getWidth(), 0, new int[]{Color.parseColor("#FF0000")
, Color.parseColor("#000000"), Color.parseColor("#FFFF00")}, new float[]{0, 0.5f, 1}, Shader.TileMode.CLAMP);
tv1.getPaint().setShader(linearGradient);
LinearGradient linearGradient = new LinearGradient(0, 0, tv2.getWidth(), tv2.getHeight(), new int[]{Color.parseColor("#FF0000")
, Color.parseColor("#000000"), Color.parseColor("#FFFF00")}, new float[]{0, 0.5f, 1}, Shader.TileMode.CLAMP);
tv2.getPaint().setShader(linearGradient);
渐变色经常会配合文字的阴影使用 这里做个笔记 以后好复制 顺便膜拜大佬
版权声明:本文为qq_16592085原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。