Подтвердить что ты не робот

Как использовать Android GradientDrawable

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

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

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

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

4b9b3361

Ответ 1

используйте этот 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>

thats it.

Ответ 2

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

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

Android: тип

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

Android: угол

Вращение градиента против часовой стрелки, где 0 - | цвет начала → конечный цвет | (По горизонтали).

Android: startColor

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

Android: ENDCOLOR

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

Android: centerColor

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

Ответ 3

введите описание изображения здесь

код

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

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"/>

См. также