前言

对于文本简记录文本颜色渐变,方便自己查阅。

好记性不如烂笔头

正文

要用渐变,需要了解一下LinearGradient的各种参数

简单介绍LinearGradient

LinearGradient的实现有两种。

第一种
public LinearGradient(float x0, float y0, float x1, float y1, int color0, int color1, Shader.TileMode tile)

x0,y0,x1,y1是起始位置和渐变的结束位置,color0,color1是渐变颜色。

最后一个参数表示绘制模式:

Shader.TileMode有3种参数可供选择,分别为CLAMP、REPEAT和MIRROR:

[1] CLAMP的作用是如果渲染器超出原始边界范围,则会复制边缘颜色对超出范围的区域进行着色
[2] REPEAT的作用是在横向和纵向上以平铺的形式重复渲染位图
[3] MIRROR的作用是在横向和纵向上以镜像的方式重复渲染位图
第二种
public LinearGradient (float x0, float y0, float x1, float y1, int[] colors, float[] positions, Shader.TileMode tile);

x0,y0,x1,y1 参数和上面一样,TileMode和上面一样

colors表示渐变的颜色数组;

positions指定颜色数组的相对位置

代码片

下面用了上面两种方式实现,也验证ok。直接上代码,自己看。

    TextView textView = findViewById(R.id.shape_tv_one);


    /**
     * 从上往下渐变
     */
    LinearGradient gradient_up_down = new LinearGradient(0f, 0f, 0f, textView.getPaint().descent() - textView.getPaint().ascent(),
            new int[]{Color.parseColor("#FFEABF"), Color.parseColor("#DBA06F")},
            null, Shader.TileMode.REPEAT);
    LinearGradient gradient_up_down2 = new LinearGradient(0f, 0f, 0f, textView.getPaint().getTextSize(),
            new int[]{Color.parseColor("#FFEABF"), Color.parseColor("#DBA06F")},
            new float[]{0, textView.getText().length()}, Shader.TileMode.CLAMP);


    /**
     * 从左往右渐变
     */
    LinearGradient gradient_left_right = new LinearGradient(0f, 0f, (int) (textView.getPaint().measureText(textView.getText(),
            0, textView.getText().length())), 0, new int[]{Color.parseColor("#FFEABF"),
            Color.parseColor("#DBA06F")}, null, Shader.TileMode.REPEAT);

    LinearGradient gradient_left_right2 = new LinearGradient(0f, 0f, (int) (textView.getPaint().measureText(textView.getText(),
            0, textView.getText().length())), 0, new int[]{Color.parseColor("#FFEABF"),
            Color.parseColor("#DBA06F")}, new float[]{0, textView.getText().length()}, Shader.TileMode.CLAMP);


    textView.getPaint().setShader(gradient_left_right2);

参考文章

本文参考如下文章,感谢。

  1. TextView 设置文字颜色渐变
  2. TextView 文字颜色渐变
  3. android 中渐变的实现和SweepGradient 圆形渐变重点注意

 

相关文章

暂无评论

none
暂无评论...