1.布局
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#666666" android:textSize="40sp" />
2.使用LinearGradient设置
LinearGradient有两个构造方法
a.LinearGradient(float x0, float y0, float x1, float y1, int colors[], float positions[], TileMode tile)
注:Android中计算x,y坐标都是以屏幕左上角为原点,向右为x+,向下为y+
第一个参数为线性起点的x坐标
第二个参数为线性起点的y坐标
第三个参数为线性终点的x坐标
第四个参数为线性终点的y坐标
第一个参数为线性起点的x坐标
第二个参数为线性起点的y坐标
第三个参数为线性终点的x坐标
第四个参数为线性终点的y坐标
(通过设置这四个值可以让渐变色从不同的位置开始,例如设置
0, 0, 0, textView.getMeasuredHeight()是从上往下的渐变色 )
第五个参数为实现渐变效果的颜色的组合
第六个参数为前面的颜色组合中的各颜色在渐变中占据的位置(比重),如果为空,则表示上述颜色的集合在渐变中均匀出现
第七个参数为渲染器平铺的模式,一共有三种
-CLAMP
重复最后一种颜色直到该View结束的地方
-REPEAT
着色器在水平或者垂直方向上对控件进行重复着色
-MIRROR
在水平方向或者垂直方向上以镜像的方式进行渲染,具有翻转的效果
0, 0, 0, textView.getMeasuredHeight()是从上往下的渐变色 )
第五个参数为实现渐变效果的颜色的组合
第六个参数为前面的颜色组合中的各颜色在渐变中占据的位置(比重),如果为空,则表示上述颜色的集合在渐变中均匀出现
第七个参数为渲染器平铺的模式,一共有三种
-CLAMP
重复最后一种颜色直到该View结束的地方
-REPEAT
着色器在水平或者垂直方向上对控件进行重复着色
-MIRROR
在水平方向或者垂直方向上以镜像的方式进行渲染,具有翻转的效果
b.public LinearGradient(float x0, float y0, float x1, float y1, int color0, int color1, TileMode tile)
注:int color0表示渐变起始颜色
int color1表示渐变终止颜色
int color1表示渐变终止颜色
3.使用
textView.setText("我是渐变色");
//测量textView的高度(必须先给textView设值,否则测量高度为0)
textView.measure(0, 0);
//从上到下的渐变色,两种颜色各占一半
LinearGradient shader_vertical = new LinearGradient(0, 0, 0, textView.getMeasuredHeight(),
new int[]{Color.parseColor("#FF7B16"), Color.parseColor("#FE4836")},
null, Shader.TileMode.CLAMP);
textView.getPaint().setShader(shader_vertical);
4.注意
必须在布局文件中设置android:textColor="#666666",需要在布局文件中给TextView一个初始字体色,否则显示颜色会偏浅,颜色出现偏差。(具体为什么暂时不知道,知道的大神可以评论留言)。