Android提供的Shader類主要是渲染圖像以及一些幾何圖形。
Shader有幾個直接子類:
BitmapShader : 主要用來渲染圖像
LinearGradient :用來進(jìn)行線性渲染
RadialGradient : 用來進(jìn)行環(huán)形渲染
SweepGradient : 掃描漸變---圍繞一個中心點(diǎn)掃描漸變就像電影里那種雷達(dá)掃描,用來梯度渲染。
ComposeShader : 組合渲染,可以和其他幾個子類組合起來使用。
1 BitmapShader
渲染器著色一個位圖作為一個紋理。位圖可以重復(fù)或設(shè)置模式。
public BitmapShader(Bitmap bitmap,Shader.TileMode tileX,Shader.TileMode tileY)
調(diào)用這個方法來產(chǎn)生一個畫有一個位圖的渲染器(Shader)。
bitmap 在渲染器內(nèi)使用的位圖
tileX The tiling mode for x to draw the bitmap in. 在位圖上X方向花磚模式
tileY The tiling mode for y to draw the bitmap in. 在位圖上Y方向花磚模式
TileMode:(一共有三種)
CLAMP :如果渲染器超出原始邊界范圍,會復(fù)制范圍內(nèi)邊緣染色。
REPEAT :橫向和縱向的重復(fù)渲染器圖片,平鋪。
MIRROR :橫向和縱向的重復(fù)渲染器圖片,這個和REPEAT重復(fù)方式不一樣,他是以鏡像方式平鋪。
2 LinearGradient
X0: 漸變起初點(diǎn)坐標(biāo)x位置
y0: 漸變起初點(diǎn)坐標(biāo)y位置
x1: 漸變終點(diǎn)坐標(biāo)x位置
y1: 漸變終點(diǎn)坐標(biāo)y位置
colors: 漸變顏色數(shù)組
positions:這個也是一個數(shù)組用來指定顏色數(shù)組的相對位置 如果為null 就沿坡度線均勻分布
tile:平鋪方式
X0: 漸變起初點(diǎn)坐標(biāo)x位置
y0: 漸變起初點(diǎn)坐標(biāo)y位置
x1: 漸變終點(diǎn)坐標(biāo)x位置
y1: 漸變終點(diǎn)坐標(biāo)y位置
color0: 漸變開始顏色
color1: 漸變結(jié)束顏色
tile: 平鋪方式
LinearGradient是線性漸變,用法如下:
Gradient是基于Shader類,所以我們通過Paint的setShader方法來設(shè)置這個漸變,代碼如下:
Paint p=new Paint();
LinearGradient lg=new LinearGradien(0,0,100,100,Color.RED,Color.BLUE,Shader.TileMode.MIRROR);
Gradient是基于Shader類,所以我們通過Paint的setShader方法來設(shè)置這個漸變,代碼如下:
p.setShader(lg);
canvas.drawCicle(0,0,200,p); //參數(shù)3為畫圓的半徑,類型為float型。