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
?
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
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"
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);