アプリケーションにカラー パレットを実装したいと考えています。これはメインの onDraw メソッドです。
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
int h = canvas.getHeight();
int w = canvas.getWidth();
if (paint == null) {
paint = new Paint();
luar = new LinearGradient(0.f, 0.f, 0.f, h, 0xffffffff, 0xff000000, TileMode.CLAMP);
}
int rgb = Color.HSVToColor(color);
Shader dalam = new LinearGradient(0.f, 0.f, w, 0.f, 0xffffffff, rgb, TileMode.CLAMP);
ComposeShader shader = new ComposeShader( luar, dalam, PorterDuff.Mode.MULTIPLY);
paint.setShader(shader);
canvas.drawRect(0.f, 0.f, w, h, paint);
}
しかし、ComposeShader shader
うまくいかないようです。
あれは、
ComposeShader shader = new ComposeShader( dalam, luar, PorterDuff.Mode.MULTIPLY);
垂直グラデーションのみを表示します。パラメータを変更すると、次のようになります。
ComposeShader shader = new ComposeShader( luar, dalam, PorterDuff.Mode.MULTIPLY);
水平グラデーションを示しています。乗算なし!なんで?