Как указать, что фоновый «цвет» элемента представления макета Android должен быть градиентом (под определенным углом)?
Я хочу указать это в XML, то есть не во время выполнения. Желательно, как стиль, который я могу применить к любому макету, который я хотел бы использовать со style
?
Создать 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
макета 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
and android:endColor
Вы можете использовать что-то вроде этого:
<?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"
Вот как я установил стиль градиента. Надеюсь это поможет. Но я использовал его для 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);