我在XML中使用LinearGradient定义遇到了一个小问题.我想要的是使用接受颜色数组和位置数组的构造函数.
这个:
LinearGradient(float x0, float y0, float x1, float y1,
int[] colors, float[] positions, Shader.TileMode tile)
Run Code Online (Sandbox Code Playgroud)
如何在XML中传递数组?这是带梯度定义的XML的例子,但是简单的一个.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:startColor="#474946"
android:endColor="#181818"
android:angle="270"/>
<corners android:radius="5dp" />
</shape>
Run Code Online (Sandbox Code Playgroud)
Eri*_*lli 69
不幸的是,使用XML定义GradientDrawable不允许使用三种以上的颜色.
看看官方参考:http://developer.android.com/reference/android/graphics/drawable/GradientDrawable.html.
例:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:startColor="#474946"
android:centerColor="#ff0000"
android:endColor="#181818"
android:angle="270"/>
<corners android:radius="5dp" />
</shape>
Run Code Online (Sandbox Code Playgroud)
因此,在您的情况下,您将使用添加一种颜色android:CenterColor.但是对于三种以上的颜色,您甚至需要使用Java.
cla*_*ker 16
@Juriy,@ ErickPetru:
+1给ErickPetru的答案.虽然我想提一下,还有一个功能可用:一个不仅可以指定centerColor,还可以指定一个中心偏移,这样可以提供更多的灵活性,有时可以帮助避免Java编码的必要性.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<corners
android:radius="5dp" />
<gradient
android:type="linear"
android:startColor="#FF000000"
android:centerColor="#FF303030"
android:endColor="#FFE0E0E0"
android:centerX="0.2"
android:centerY="0.3"
android:angle="270" />
</shape>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
49734 次 |
| 最近记录: |