Установить цвет фона в представлении макета на градиент в Android?
Как указать, что фоновый "цвет" элемента представления макета Android должен быть градиентом (под определенным углом)?
Я хочу указать это в XML, то есть не во время выполнения. Желательно, как стиль, который я могу применить к любому макету, который я хотел бы использовать с свойством style
?
Ответы
Ответ 1
создать gradient.xml
в /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>
и в вашем файле main.xml
в /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>
вы можете указать угол, заменив значение android:angle
и цвет начала/конца, заменив android:startColor
и android:endColor
Ответ 2
Вы можете использовать что-то вроде этого:
<?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>
построить градиент (вы выбираете цвета, которые вам нравятся). Поместите это в drawable и voila, у вас есть собственная форма для использования в качестве фона: android:background="@drawable/the_name_of_your_xml"
Ответ 3
Вот как я установил стиль градиента. Надеюсь это поможет. Но я использовал его для textview. Возможно, вам нужно внести некоторые изменения в соответствии с вашим фоном.
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);