J'ai lu plus de 20 questions/réponses mais je n'arrive toujours pas à obtenir ce que je veux. Je veux couper un cercle à l'intérieur d'un rectangle comme on le voit ci-dessous:Comment faire pour tracer un chemin circulaire à l'intérieur d'un rectangle dans Android
Voici mon code:
@Override
protected void onDraw(Canvas canvas) {
Paint paint = new Paint();
paint.setStyle(Paint.Style.FILL);
paint.setARGB(180, 0, 0, 0);
canvas.drawRect(0, 0, getWidth(), getHeight(), paint);
Path circularPath = new Path();
circularPath.addCircle(getWidth()/2, getHeight()/2, radius, Path.Direction.CCW);
canvas.clipPath(circularPath, Region.Op.REPLACE);
canvas.drawColor(0x00000000);
}
Mon arrière-plan (setARGB
) affiche correctement, mais rien est clipsé. J'ai également essayé différentes valeurs Op
autres que REPLACE
, rastérisation forcée de logiciel (comme je l'ai lu sur certaines versions Android clipPath
ne supporte pas certains des Op
) en appelant setLayerType(LAYER_TYPE_SOFTWARE, null);
sur le constructeur, mais sans succès. Comment puis-je obtenir l'effet désiré?
Note: Ma version minimum SDK est 15, donc je ne pas besoin de soutenir quoi que ce soit inférieur à 4,0.
avez-vous essayé Region.Op.DIFFERENCE? – pskink
@pskink oui, juste essayé maintenant encore pour s'assurer. Malheureusement, rien ne se passe. –
DIFFERENCE fonctionne bien pour moi, essayez de canvas.drawColor avec Color.RED, puis clipPath puis drawColor 0x88000000 – pskink