我尝试将CSS径向渐变转换为Android,发现我需要RadialGradient,因为CSS具有多种颜色和停止点。 CSS的示例如下。
background-image: radial-gradient(circle at 24% 50%, #ffffff, #c0e3e0 20%, #a4c4d7 61%, #000000);
我尝试使用
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
>
<gradient
android:centerX="36%"
android:centerY="50%"
android:endColor="#000000"
android:gradientRadius="300"
android:startColor="#ffffff"
android:type="radial"
/>
</shape>
但您不能包括所有颜色,也不能停下来。
我去了RadialGradient
RadialGradient radialGradient = new RadialGradient(0.25f, 0.45f, 140.f, new int[]{
ContextCompat.getColor(context, R.color.background_gradient_start_color),
ContextCompat.getColor(context, R.color.background_gradient_second_color),
ContextCompat.getColor(context, R.color.background_gradient_third_color),
ContextCompat.getColor(context, R.color.background_gradient_end_color)}, new float[]{1.0f, 0.2f, .61f, 1.0f},
Shader.TileMode.CLAMP);
但我无法将RadialGradient设置为我的RelativeLayout的背景,因为它不是android.graphics.Drawable或不知道如何。有人可以提供解决方案吗?
最佳答案
您可以使用layer-list,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<layer-list>
<item>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:centerX="36%"
android:centerY="50%"
android:endColor="#33c0e3e0"
android:gradientRadius="300"
android:startColor="#ffffff"
android:type="radial"
/>
</shape>
</item>
<item>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:centerX="36%"
android:centerY="50%"
android:endColor="#000000"
android:centerColor="@color/colorAccent"
android:gradientRadius="600"
android:startColor="#9ca4c4d7"
android:type="radial"
/>
</shape>
</item>
</layer-list>