Android有关于文字颜色的渐变

  • Post author:
  • Post category:其他




先放张效果图镇楼

在这里插入图片描述



直接进入正题



实现文字的渐变效果其实很简单

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 版权协议,转载请附上原文出处链接和本声明。