Как использовать Android GradientDrawable
Я пытаюсь использовать GradientDrawable для установки градиента на некоторые фоны и кнопки.
К сожалению, документация не очень детальная.
Каковы основные атрибуты для настройки градиента? Я понимаю начало и конец, но некоторые другие атрибуты могут нуждаться в некотором объяснении.
В настоящий момент я использовал изображения в качестве фона для кнопок, но ярлык, определенный в XML, был бы намного приятнее.
Я пытаюсь выглядеть так (это очень легкий градиент): alt text http://janusz.de/~janusz/RedButton.png
Ответы
Ответ 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"/>
См. также