android高级渲染,Android高级渲染Shader(二)

除了BitmapShader外,还有几种渲染

1.LinearGradient--线性渲染

参数

float left 渲染区域的左坐标

float top 渲染区域的上坐标

float right 渲染区域的右坐标

float bottom 渲染区域的下坐标

float colors[] 渲染的颜色数组

float positions[] 对应颜色数组的显示位置,取0-1小数,为空时均分

TileMode tile 拉伸模式

private int[] colors = new int[]{Color.RED,Color.GREEN,Color.BLUE};

/**

* 线性渲染

* @param canvas

*/

private void drawLinearGradient(Canvas canvas){

LinearGradient linearGradient = new LinearGradient(0,0,400,400,colors,null, Shader.TileMode.CLAMP);

paint.setShader(linearGradient);

canvas.drawRect(0,0,400,400,paint);

}

ef733b6559d5

LinearGradient.jpg

2.SweepGradient--渐变渲染/梯度渲染

参数

float cx 渲染区域的X坐标

float cy 渲染区域的Y坐标

float colors[] 渲染的颜色数组

float positions[] 对应颜色数组的显示位置,取0-1小数,为空时均分

/**

* 梯度渲染/渐变渲染

* @param canvas

*/

private void drawSweepGradient(Canvas canvas){

SweepGradient sweepGradient = new SweepGradient(200,200,colors,null);

paint.setShader(sweepGradient);

canvas.drawRect(0,0,400,400,paint);

}

ef733b6559d5

SweepGradient.jpg

3.RadialGradient--环形渲染

参数

float cx 渲染区域的圆心X坐标

float cy 渲染区域的圆心Y坐标

float radius 渲染圆形半径

float colors[] 渲染的颜色数组

float positions[] 对应颜色数组的显示位置,取0-1小数,为空时均分,最大位置参照半径,超过半径显示最后一个颜色

TileMode tileMode 拉伸模式

ef733b6559d5

RadialGradient.jpg

4.ComposeShader--组合渲染

参数

Shader shaderA 渲染效果A

Shader shaderB 渲染效果B

PorterDuff.Mode mode 组合模式

/**

* 组合渲染

* @param canvas

*/

private void drawComposeShader(Canvas canvas){

BitmapShader bitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP,Shader.TileMode.CLAMP);

SweepGradient sweepGradient = new SweepGradient(200,200,colors,null);

ComposeShader composeShader = new ComposeShader(bitmapShader,sweepGradient, PorterDuff.Mode.ADD);

paint.setShader(composeShader);

canvas.drawRect(0,0,1000,1000,paint);

}

ef733b6559d5

ComposeShader.jpg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值