EricLarch Posté(e) 31 mai 2010 Share Posté(e) 31 mai 2010 Bonjour à tous, De belles interfaces utilisateurs passent parfois par l'ajout de relief (ombres). Si TextView permet de le faire très facilement, ce n'est pas le cas pour ImageView et toutes les autres widgets. Après avoir étudié quelques méthodes, je suis arrivé à la conclusion que la solution la plus élégante consiste à utiliser les images extensibles (9-patch). J'ai donc réalisé un petit tutoriel qui explique comment réaliser facilement ses ombres portées sous Android (en XML uniquement, sans avoir besoin de sous classer des widgets), avec deux fichiers 9-patch qui permettent d'en intégrer immédiatement dans vos UIs. >> http://www.ericlarcheveque.com/2010/05/android-ajouter-une-ombre-sur-vos-views.html Cette méthode a comme avantage la simplicité et l'utilisation 100% XML (un graphiste peut travailler les layout sans avoir à toucher au code), mais a comme désavantage important la génération obligatoire d'un fichier 9-patch à chaque type d'ombre différent souhaité. Si vous utilisez d'autres méthodes, n'hésitez pas à les rajouter ici. Eric Lien vers le commentaire Partager sur d’autres sites More sharing options...
Cyril Mottier Posté(e) 31 mai 2010 Share Posté(e) 31 mai 2010 Ajouter un effet d'ombre n'est en effet pas une opération "facile". La raison de ce manque est assez simple : Android n'est pas Photoshop et donc lorsqu'on souhaite le faire il faut souvent tomber assez bas dans les couches d'abstraction (très loin des Views). Il existe néanmoins quelques méthodes utilisables pour ajouter une dropShadow : - celle que tu donnes, probablement la plus simple et la plus courante. - Dessiner à la main le shadow à l'aide de la méthode setShadowLayer. Le hic c'est que c'est au niveau Bitmap que ça se joue ... Mais avec un peu de travail on peut très bien imaginer un ShadowDrawable ;) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.