J'ai un ViewGroup qui consiste en un en-tête et un cercle d'éléments de menu. Fondamentalement, j'ai une animation de fermeture/ouverture où les vues de mes articles vont derrière la vue d'en-tête. Comme toutes les vues ont des transparences, lorsque les vues d'élément passent derrière la vue d'en-tête, elles sont toujours visibles et finissent par apparaître derrière la vue d'en-tête à travers les transparents. Ce que je voulais faire est de recouper les vues d'articles avec la vue hweader, en effaçant l'intersection. Ce que je suis venu avec était de remplacer dispatchDraw
et faire quelque chose comme PorterDuff.Mode.CLEAR
Dessiner devant certaines vues enfant
Mais je ne peux le faire à toutes les vues à la fois, dans le sens. En utilisant le code ci-dessous, il effacera tout ce qui a été dessiné dans la vue dans cette zone spécifique, donc l'en-tête.
@Override
protected void dispatchDraw(Canvas canvas) {
super.dispatchDraw(canvas);
//do stuff here
}
Y at-il un moyen de retravailler la vue ou même de sélectionner les vues que je veux effacer?