2011-02-10 6 views
1

Je suis en train de réaliser à partir du code les éléments suivants: (ne peut pas publier des images Unfortunatelly)effet emboss gradient Android

Un rectangle avec des coins arrondis, avec un effet emboss (la lumière vient du coin en haut à gauche). Au milieu, il y a un cercle gravé dans le rectangle. Imaginez une surface d'eau, et une goutte d'eau frappe la surface. Cela crée une brèche dans la surface. Ce cercle est également peint avec un certain gradient linéaire.

Le problème est que je ne pouvais utiliser le EmbossMaskFilter d'Android pour augmenter la surface, pour le rapprocher de l'œil de l'utilisateur, mais je ne sais pas comment mettre en œuvre le contraire. N'importe qui peut m'aider avec ça?

Merci beaucoup.

Répondre

1

Utilisez un étireur composite ou des tiroirs en couches.

Pour créer un drawable avec des coins arrondis et un dégradé à l'intérieur, utilisez quelque chose comme ceci:

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> 
    <corners android:radius="10dp"/> 
    <gradient android:startColor="@color/gradientstart" android:endColor="@color/gradientend" android:angle="315"/> 
</shape> 

Créer deux ces dessinables et les mettre au-dessus de l'autre pour créer l'effet recherché.

+0

Merci pour l'indice, mais cela ne m'aide pas à obtenir l'effet d'estampillage de l'oreiller (graver) pour le cercle intérieur que je recherche. – Miha

0

Si vous n'utilisez pas un assez bon nombre d'éléments de liste de calques comme dessinable, vous n'obtiendrez probablement pas l'effet que vous recherchez facilement avec des tirages XML. Une meilleure solution serait de créer une image de 9 patchs. Voir comment cela fonctionne à draw9patch.com, qui est un outil pour créer 9 images de patch à partir d'une image standard.

Documentation NinePatch: here.

Dans le cas, vous avez encore voulez vraiment utiliser dessinables xml vous pouvez toujours obtenir l'effet (bien que la performance pourrait prendre un coup) à l'aide d'un layer-list avec plusieurs gradients empilés ontop les uns des autres.