Je veux implémenter la palette de couleurs dans mon application. C'est la principale méthode onDraw.PorterDuff.Mode.MULTIPLY à l'intérieur ComposeShader ne fonctionne pas correctement
@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);
}
Mais, ComposeShader shader
semble ne pas fonctionner.
C'est,
ComposeShader shader = new ComposeShader(dalam, luar, PorterDuff.Mode.MULTIPLY);
montre que gradient vertical. Et si je change les paramètres:
ComposeShader shader = new ComposeShader(luar, dalam, PorterDuff.Mode.MULTIPLY);
il montre le gradient horizontal. Pas de multiplication! Pourquoi?
voir http://pastebin.com/y9sAMNAP – pskink
@pskink, ce http://stackoverflow.com/q/15878769/1979882 – Vyacheslav
@pskink, votre lien n'ont pas aidé – Vyacheslav