Quelqu'un sait-il comment définir un gradient conique dans Android ? Comme dans cette image :
http://www.astutegraphics.com/images/blog/tutorials/how_to_create_true_gears_18_oct_2011/29.png
Quelqu'un sait-il comment définir un gradient conique dans Android ? Comme dans cette image :
http://www.astutegraphics.com/images/blog/tutorials/how_to_create_true_gears_18_oct_2011/29.png
Bien sûr, utilisez un SweepGradient puis dessinez un cercle avec sur une toile.
Un exemple peut être trouvé ici . Amusez-vous bien !
Si vous n'avez pas besoin de trop de couleurs, vous pouvez également les définir via xml :
/res/drawable/sweepgradient.xml :
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:a="http://schemas.android.com/apk/res/android"
a:shape="oval"
a:dither="true">
<gradient a:type="sweep"
a:startColor="#FFFF0000"
a:centerColor="#FF0000FF"
a:endColor="#FF00FF00" />
</shape>
Un SweepGradient est un composant natif. Vous ne pouvez donc pas compter sur les confortables stacktraces de Javas. Si vous obtenez des erreurs ne provenant pas de la pile, vérifiez d'abord tous les composants natifs.
Voici un exemple rapide :
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.SweepGradient;
import android.view.View;
public class GradientView extends View {
// Edit these values as you want!
private static int[] mColors={Color.RED, Color.GREEN, Color.BLUE};
private Paint mPaint=new Paint();
private boolean mSetShader=false;
public GradientView(Context context) {
super(context);
mPaint.setAntiAlias(true);
}
@Override
protected void onDraw(Canvas canvas) {
float cX=getWidth()/2F, cY=getHeight()/2F;
if (!mSetShader) {
mPaint.setShader(new SweepGradient(cX, cY, mColors, null));
mSetShader=true;
}
canvas.drawCircle(cX, cY, Math.min(cX, cY), mPaint);
}
}
Notez que vous voudrez peut-être recréer le SweepGradient si le centre change (si la vue est redimensionnée). J'ai laissé de côté les constructeurs supplémentaires et onMeasure pour plus de simplicité...
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.