Круговой градиент в андроиде
Я пытаюсь сделать градиент, который исходит из середины экрана в белом цвете, и превращается в черный, когда он перемещается к краям экрана.
Как я делаю "нормальный" градиент, подобный этому, я экспериментировал с разными формами:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:startColor="#E9E9E9" android:endColor="#D4D4D4"
android:angle="270"/>
</shape>
При использовании "овальной" формы я, по крайней мере, получил круглую форму, но эффекта градиента не было. Как я могу это достичь?
Ответы
Ответ 1
Вы можете получить круговой градиент с помощью android:type="radial"
:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:type="radial" android:gradientRadius="250"
android:startColor="#E9E9E9" android:endColor="#D4D4D4" />
</shape>
Ответ 2
Я всегда получаю полезные изображения при изучении новой концепции, поэтому это дополнительный ответ.
![введите описание изображения здесь]()
%p
означает процент от родителя, т.е. процент от самого узкого измерения любого вида, на который мы устанавливаем нашу возможность. Изображения выше были сгенерированы путем изменения gradientRadius
в этом коде
my_gradient_drawable
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:type="radial"
android:gradientRadius="10%p"
android:startColor="#f6ee19"
android:endColor="#115ede" />
</shape>
Что можно установить в атрибуте вида background
, подобном этому
<View
android:layout_width="200dp"
android:layout_height="100dp"
android:background="@drawable/my_gradient_drawable"/>
Центр
Вы можете изменить центр радиуса с помощью
android:centerX="0.2"
android:centerY="0.7"
где десятичные числа - это доли ширины и высоты для x
и y
соответственно.
![введите описание изображения здесь]()
Ответ 3
Я думаю, вы должны добавить android: centerColor
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="#FFFFFF"
android:centerColor="#000000"
android:endColor="#FFFFFF"
android:angle="0" />
</shape>
В этом примере отображается горизонтальный градиент от белого до черного до белого.
Ответ 4
<gradient
android:centerColor="#c1c1c1"
android:endColor="#4f4f4f"
android:gradientRadius="400"
android:startColor="#c1c1c1"
android:type="radial" >
</gradient>