Я пытаюсь сделать ComposeShader с помощью LinearGradients, но может иметь мало проблем.
1) Если я использую только один LinearGradient, например
lgA = новый 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);
}
}