2019-12-30 安卓绘制线性渐变效果

安卓可以通过LinearGradient绘制线性多彩渐变效果,

1.创建Paint,在绘制文本和图形用它来设置图形颜色, 样式等绘制信息,其中依据机器性能与需要酌情添加setAntiAlias(true)(抗锯齿,绘制图形速度会变慢),setDither(true)(图像抖动处理,会使绘制出来的图片颜色更加平滑),也可通过new Paint(Paint.ANTI_ALIAS_FLAG),paint.setFlags(Paint.ANTI_ALIAS_FLAG)实现,效果相同。

2.使用LinearGradient进行线性渐变绘制,其中

x0:绘制的起点x轴坐标;

y0:绘制的起点y轴坐标;

x1:渐变结束点x轴坐标;

y1:渐变结束点y轴坐标

colors:此项直接分写成两端的两种色彩数值,也可写成int[]型color组实现分布组内颜色的效果;

positions:位置数组,position的取值范围[0,1],作用是指定某个位置的颜色值,如果传null,渐变就线性变化;

tile:用于绘制区域小于指定的控件全部时,空白区域的颜色填充方法。

CLAMP边缘拉伸,为被shader覆盖区域,使用shader边界颜色进行填充

REPEAT 在水平和垂直两个方向上重复,相邻图像没有间隙

MIRROR以镜像的方式在水平和垂直两个方向上重复,相邻图像有间隙

注意:

(1)如果使用的起始color没有设置透明度时,会默认有0x00XXXXXX效果,在绘制对象为不断变化的进度条时起始颜色会随进度变长逐渐透明化;

(2)x0,y0与x1,y1决定了渐变方向,例如0,0到max_x,max_y即是左上角到右下渐变

(3)float[] position 中的第几项决定了int [] colors 中的相同位置item在渐变中所占的比例

(4)所用color值应该是 array.getColor所设置的16进制色值(示例:0x000000)

示例:


Paint thumbPaint =new Paint(Paint.ANTI_ALIAS_FLAG);

LinearGradient shader =new LinearGradient(0, 0, progress, mProgressHeight,

        new int[]{mProgressColor, mMiddleColor, mThumbColor}, null, Shader.TileMode.CLAMP);

thumbPaint.setShader(shader);

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容