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)
  • 1.
  • 2.
  • 3.

参数

说明

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);
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

图片图片

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)
  • 1.
  • 2.
  • 3.

参数

说明

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);
  • 1.
  • 2.
  • 3.
  • 4.

图片图片

SweepGradient 扫描/梯度/扇形渐变

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

SweepGradient(float x, float y, int color0, int color1)
  • 1.
  • 2.
  • 3.

参数

说明

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);
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

图片图片

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

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容器

2023-08-01 12:51:18

WebGPT机器学习模型

2024-01-02 12:05:26

Java并发编程

2024-02-04 00:00:00

Effect数据组件

2024-01-19 08:25:38

死锁Java通信

2023-07-26 13:11:21

ChatGPT平台工具

2023-01-10 08:43:15

定义DDD架构

2023-12-08 13:23:00

大数据MySQL存储

2024-08-06 09:47:57

2024-07-31 08:39:45

Git命令暂存区

2023-01-30 09:01:54

图表指南图形化

2024-05-06 00:00:00

InnoDBView隔离

2023-12-12 08:02:10

2023-10-10 11:04:11

Rust难点内存

2022-07-08 09:27:48

CSSIFC模型

2022-06-16 07:50:35

数据结构链表

2023-06-26 13:08:52

GraphQL服务数据
点赞
收藏

51CTO技术栈公众号