Ich versuche, ComposeShader mit LinearGradients zu machen, aber vielleicht habe ich ein paar Probleme.
1) Wenn ich nur einen LinearGradient wie
verwende lgA = neuer LinearGradient (0, 0, 0, h, 0xff000000, 0xffffffff, Shader.TileMode.CLAMP);
dann über einen Teil der Forderung richtig
2) Wenn die Verwendung ComposeShader dann nicht Ergebnis wie tatsächlichen BedarfWie man LinearGradients in ComposeShader einstellt
Dann, wie ich dieses Problem irgendeine Hilfe lösen kann, bitte Ich für dieses Problem.
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);
}
}