Можем ли мы сделать многоцветный градиент в xml для фона Android?

Я пытался сделать многоцветный фон в XML, но было доступно только 3 варианта начала, центра, конца и указанных углов. Разве мы не можем сделать фон, подобный этому ниже...multi color at different angle

multi color at different angle

Можем ли мы сделать как этот фон в Android?

Ответ 1

Согласно developers.android вы можете... и это код, который они использовали

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >

<gradient
    android:angle="45"
    android:endColor="#87CEEB"
    android:centerColor="#768087"
    android:startColor="#000"
    android:type="linear" />

</shape>

также здесь учебник

надеюсь, что это поможет

Ответ 2

Вы не можете реализовать +3 градиентный цвет в XML файле. Но вы можете сделать это в свой код java/kotlin с классом GradientDrawable. Это версия Java, замените массив цветов ярлыками цветов.

GradientDrawable gradientDrawable = new GradientDrawable(
                Orientation.TOP_BOTTOM,
                new int[]{ContextCompat.getColor(this, R.color.color1),
                        ContextCompat.getColor(this, R.color.color2),
                        ContextCompat.getColor(this, R.color.color3),
                        ContextCompat.getColor(this, R.color.color4)});

        findViewById(R.id.background).setBackground(gradientDrawable);

Ответ 3

Создайте новый XML файл в Drawable и скопируйте этот код:

<?xml version="1.0" encoding="utf-8"?>
<shape    xmlns:android="http://schemas.android.com/apk/res/android">

<gradient android:startColor="#9A0C0C"
          android:centerColor="#CE9908"
          android:endColor="#3091FF"
          android:angle="270"/>
</shape>

enter image description here

Ответ 4

Это может быть достигнуто с помощью векторной графики я сделал этот градиент фона в Adobe Illustrator, а затем импортировал этот векторный актив в виде XML в Android Studio, и он прекрасно работает с масштабируемостью векторов

enter image description here

и вот код для этого вектора /xml drawable

<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="987.3dp"
android:height="870.3dp"
android:viewportWidth="987.3"
android:viewportHeight="870.3">
<path android:pathData="M0,870l0,-870l987,0l0,870z">
    <aapt:attr name="android:fillColor">
        <gradient
            android:endX="493.5"
            android:endY="870"
            android:startX="493.5"
            android:startY="2.6645353E-14"
            android:type="linear">
            <item
                android:color="#FF0000FF"
                android:offset="0" />
            <item
                android:color="#FF6AFCFF"
                android:offset="0.1974" />
            <item
                android:color="#FFE900D0"
                android:offset="0.3786" />
            <item
                android:color="#FFFF7D15"
                android:offset="0.5906" />
            <item
                android:color="#FFE6FF55"
                android:offset="0.7513" />
            <item
                android:color="#FFED1E79"
                android:offset="1" />
        </gradient>
    </aapt:attr>
</path>

Ответ 5

Вы можете сделать это с помощью слоя-списка радиальных градиентов, тогда вы устанавливаете различную непрозрачность для разных элементов