我正在尝试使用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);
}
}