Dessin LinearLayout avec coins arrondis

Je suis en train de mettre en œuvre un LinearLayout sous-classe qui se dessine, avec des coins arrondis. Au cours de ma recherche, j'ai mis setWillNotDraw(false) et remplacé onDraw() pour dessiner un rectangle arrondi dans la toile:

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    int sc = canvas.saveLayer(0, 0, getWidth(), getHeight(), drawPaint, Canvas.MATRIX_SAVE_FLAG | Canvas.CLIP_SAVE_FLAG | Canvas.HAS_ALPHA_LAYER_SAVE_FLAG
            | Canvas.FULL_COLOR_LAYER_SAVE_FLAG | Canvas.CLIP_TO_LAYER_SAVE_FLAG);
    canvas.drawRoundRect(bounds, mCornerRadius, mCornerRadius, roundPaint);
    canvas.restoreToCount(sc);
}

où:

drawPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
drawPaint.setColor(0xffffffff);
drawPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));

roundPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
roundPaint.setColor(0xffffffff);

DST_IN semble la bonne option ici (en fonction de la APIDemos exemple), mais la zone qui doit être transparente (arrondi) a en revanche un fond noir, et les coins de la les enfants sont encore visibles. C'est le résultat sur un Galaxy Nexus avec Android 4.2.2:

Dessin LinearLayout avec coins arrondis

Un indice?

EDIT: Voici ce que j'aimerais atteindre, désolé pour la grossièreté de photoshopping 🙂

Dessin LinearLayout avec coins arrondis

EDIT 2: j'ai ajouté à GitHub un exemple praticable projet: https://github.com/venator85/RoundClippingLayout

Merci 😉

source d'informationauteur Venator85