我正在嘗試使用LinearGradients製作ComposeShader,但可能有幾個問題。
1)如果我只使用一個LinearGradient,如
lgA = new LinearGradient(0,0,0,h,0xff000000,0xffffffff,Shader.TileMode.CLAMP);
那麼上述的要求正確
2)部分如果使用ComposeShader那麼結果不會像實際需求如何將LinearGradients設置爲ComposeShader
那我該怎麼解決這個問題,請任何一個幫助我爲這個問題。
public class DrawGradient extends View {
Paint paint;
LinearGradient lgA;
LinearGradient lgB;
ComposeShader shader;
public DrawGradient(Context context) {
super(context);
initView();
}
private void initView() {
setLayerType(View.LAYER_TYPE_SOFTWARE, null);
paint = new Paint();
paint.setAntiAlias(true);
paint.setFilterBitmap(true);
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
lgA = new LinearGradient(0, 0, w, h, 0xff000000, 0xffffffff, Shader.TileMode.CLAMP);
lgB = new LinearGradient(0, h, w, 0, 0xffffffff, 0xff000000, Shader.TileMode.CLAMP);
shader = new ComposeShader(lgA, lgB, PorterDuff.Mode.MULTIPLY);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
paint.setShader(shader);
canvas.drawPaint(paint);
}
}