除了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);
}
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);
}
3.RadialGradient--环形渲染
参数
- float cx 渲染区域的圆心X坐标
- float cy 渲染区域的圆心Y坐标
- float radius 渲染圆形半径
- float colors[] 渲染的颜色数组
- float positions[] 对应颜色数组的显示位置,取0-1小数,为空时均分,最大位置参照半径,超过半径显示最后一个颜色
-
TileMode tileMode 拉伸模式
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);
}