Как использовать Android GradientDrawable - PullRequest
27 голосов
/ 19 апреля 2010

Я пытаюсь использовать GradientDrawable, чтобы установить градиент для некоторых фонов и кнопок. К сожалению, документация не очень подробная.

Каковы основные атрибуты для настройки градиента? Я понимаю начало и конечный цвет, но некоторые другие атрибуты могут нуждаться в объяснении.

В данный момент я использовал изображения в качестве фона для кнопок, но рисование, определенное в XML, было бы намного приятнее.

Я пытаюсь выглядеть так (это очень легкий градиент): альтернативный текст http://janusz.de/~janusz/RedButton.png

Ответы [ 3 ]

41 голосов
/ 19 апреля 2010

используйте этот xml в качестве фона для изображения.

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient android:angle="90" android:startColor="#7c0000" android:endColor="#A71C1C"/>
</shape>

Вот и все.

38 голосов
/ 17 января 2013

Я дам тот же ответ, что и Правин , но постараюсь также объяснить настройки.

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <gradient 
       android:type="linear" 
       android:angle="-90" 
       android:startColor="#7c0000" 
       android:endColor="#A71C1C" />
</shape>

андроид: тип

Существует 3 типа градиентов, по умолчанию и один для этого вопроса "линейный". Другие 2 являются «радиальными» и «развертки».

андроид: угол

Поворот градиента против часовой стрелки, где 0 | Начальный цвет -> Конечный цвет | (По горизонтали).

андроид: startColor

Цвет, с которого начинается градиент, начало определяется вращением.

андроида: ENDCOLOR

Цвет, которым заканчивается градиент, конец определяется вращением.

андроид: centerColor

При желании также может быть цвет между начальным и конечным цветами.

3 голосов
/ 17 июля 2017

enter image description here

код

Я изначально нашел этот вопрос, потому что хотел сделать это в коде. Вот как это сделать программно.

int startColor = 0xfff6ee19; // yellow
int endColor = 0xff115ede;   // blue
GradientDrawable gradientDrawable = new GradientDrawable(
        GradientDrawable.Orientation.LEFT_RIGHT,
        new int[] {startColor, endColor});

View myView = findViewById(R.id.my_view);
myView.setBackgroundDrawable(gradientDrawable);

Различные ориентации на изображении вверху могут быть достигнуты путем изменения Orientation в конструкторе.

XML

Как уже ответили, это то, как вы делаете это в XML.

my_gradient_drawable.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <gradient
        android:type="linear"
        android:angle="0"
        android:startColor="#f6ee19"
        android:endColor="#115ede" />
</shape>

Вы устанавливаете его на фоне какого-либо вида. Например:

<View
    android:layout_width="200dp"
    android:layout_height="100dp"
    android:background="@drawable/my_gradient_drawable"/>

Смотри также

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...