Android开发之渐变色,你学会了吗?

开发 前端
android.graphics中提供了有关Gradient类,包含LinearGradient线性渐变、 RadialGradient径向渐变和SweepGradient梯度渐变,它们的继承自android.graphics.Shader。

android.graphics中提供了有关Gradient类,包含LinearGradient线性渐变、 RadialGradient径向渐变和SweepGradient梯度渐变,它们的继承自android.graphics.Shader。

LinearGradient 线性渐变

LinearGradient(float x0, float y0, float x1, float y1, int[] colors, float[] positions, Shader.TileMode tile)

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

参数

说明

x0

渐变线起点的x坐标

y0

渐变线起点的y坐标

x1

渐变线末端的x坐标

y1

渐变线末端的y坐标

colors

沿着渐变线分布的颜色数组

color0

渐变线开始处的颜色

color1

渐变线末端的颜色

positions

颜色数组中每个对应颜色的相对位置[0,1]。如果为null,则颜色沿线均匀分布

tile

着色器平铺模式

Paint paint =new Paint();
//两个坐标形成变量,规定了渐变的方向和间距大小,着色器为镜像
LinearGradient linearGradient =new LinearGradient(0,0,200,0, Color.RED,Color.BLUE, Shader.TileMode.MIRROR);
paint.setShader(linearGradient);
paint.setStrokeWidth(50);
canvas.drawLine(0,getMeasuredHeight()/2,getMeasuredWidth(),getMeasuredHeight()/2, paint);

图片图片

RadialGradient 径向/放射渐变

RadialGradient(float x, float y, float radius, int[] colors, float[] positions, Shader.TileMode tile)

RadialGradient(float x, float y, float radius, int color0, int color1, Shader.TileMode tile)

参数

说明

x

半径中心的x坐标

y

半径中心的y坐标

radius

渐变的圆的半径

colors

颜色分布在圆的中心和边缘之间

color0

圆圈中心的颜色

color1

圆圈边缘的颜色

positions

颜色数组中每个对应颜色的相对位置[0,1]。如果为null,则颜色沿线均匀分布

tile

着色器平铺模式

paint =new Paint();
radialGradient =new RadialGradient(240,360,200, new int[]{Color.BLUE, Color.GREEN, Color.RED },null, Shader.TileMode.CLAMP);
paint.setShader(radialGradient);
canvas.drawCircle(240,360,200,paint);

图片图片

SweepGradient 扫描/梯度/扇形渐变

SweepGradient(float x, float y, int[] colors, float[] positions)

SweepGradient(float x, float y, int color0, int color1)

参数

说明

x

中心的x坐标

y

中心的y坐标

colors

颜色分布在中心周围,阵列中必须至少有2种颜色

color0

扫描开始时使用的颜色

color1

扫描结束时使用的颜色

positions

颜色数组中每个对应颜色的相对位置[0,1]。如果为null,则颜色沿线均匀分布

paint =new Paint();
int[] colors = new int[]{Color.GREEN, Color.GREEN, Color.BLUE, Color.RED, Color.RED};
sweepGradient = new SweepGradient(240, 360,colors,null);
paint.setShader(sweepGradient);
canvas.drawCircle(x,y,200,paint);

图片图片

责任编辑:武晓燕 来源: 沐雨花飞蝶
相关推荐

2022-10-27 09:13:58

CSSGradient

2023-02-24 08:32:50

CSS渐变属性

2022-04-29 08:55:43

前端开发规范

2023-11-27 07:26:42

Springboot容器

2024-01-19 08:25:38

死锁Java通信

2024-02-04 00:00:00

Effect数据组件

2023-01-10 08:43:15

定义DDD架构

2023-07-26 13:11:21

ChatGPT平台工具

2024-01-02 12:05:26

Java并发编程

2023-08-01 12:51:18

WebGPT机器学习模型

2023-12-08 13:23:00

大数据MySQL存储

2023-01-30 09:01:54

图表指南图形化

2024-07-31 08:39:45

Git命令暂存区

2024-05-06 00:00:00

InnoDBView隔离

2022-07-08 09:27:48

CSSIFC模型

2023-10-10 11:04:11

Rust难点内存

2023-12-12 08:02:10

2024-08-06 09:47:57

2023-05-05 06:54:07

MySQL数据查询

2022-06-16 07:50:35

数据结构链表
点赞
收藏

51CTO技术栈公众号