Définir la couleur d'arrière-plan d'une vue de mise en page à un dégradé dans Android?

Comment spécifier que la "couleur" d'arrière-plan D'un élément de vue de mise en page Android doit être un dégradé (à un angle spécifique) ?

Je souhaite le spécifier dans le XML, c'est-à-dire pas à l'exécution. De préférence en tant que style, je peux appliquer à n'importe quelle mise en page que je souhaite avec la propriété style?

23
demandé sur Synesso 2011-09-12 17:38:37

3 réponses

Créer gradient.xml dans /res/drawable:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:startColor="#FFFFFF"
        android:endColor="#00000000"
        android:angle="45"/>    
</shape>

Et dans votre fichier de mise en page main.xml dans /res/layout:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/gradient"
    >   
</LinearLayout>

Vous pouvez spécifier l'angle en remplaçant la valeur android:angle et la couleur de début / fin en remplaçant android:startColor et android:endColor

74
répondu DonGru 2011-09-12 14:07:48

Vous pouvez utiliser quelque chose comme ceci:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
    <gradient android:startColor="#A1A1A1" 
              android:centerColor="#BDBDBD"
              android:endColor="#A4A4A4" 
              android:angle="-90" />
</shape>

Pour créer un dégradé (vous choisissez les couleurs que vous aimez). Placez ceci dans drawable et voila vous avez votre propre forme à utiliser comme arrière-plan: android:background="@drawable/the_name_of_your_xml"

8
répondu Aurelian Cotuna 2011-09-12 14:33:57

Voici comment j'ai défini le style de dégradé. Espérons que cette aide. Mais je l'ai utilisé pour textview. Peut-être que vous devez faire quelques changements pour s'adapter à votre arrière-plan de mise en page.

            Shader textShader = new LinearGradient(0, 0, 0, 20, new int[] {
            Color.WHITE, getResources().getColor(//some color),
            getResources().getColor(//some color), Color.WHITE },
            new float[] {  0.25f,0.50f,0.75f, 1 }, TileMode.CLAMP);
            textview.getPaint().setShader(textShader);
5
répondu Andro Selva 2011-09-12 13:48:46