【发布时间】:2016-06-28 17:16:09
【问题描述】:
我想在我的SeekBar 中设置一个具有线性渐变的自定义drawable 作为条形的背景drawable。我在以下 sn-p 的第二个语句中创建 LinearGradient,并这样做:
// Creating the drawable:
ShapeDrawable shapeDrawable = new ShapeDrawable(new RectShape());
Shader linearGradientShader = new LinearGradient(0, 0, 300, 20, new int[] { Color.RED, Color.BLUE },
new float[] { 0, 1 }, Shader.TileMode.CLAMP);
shapeDrawable.getPaint().setShader(linearGradientShader);
shapeDrawable.setBounds(10, 10, 300, 30);
seekBar.setProgressDrawable(shapeDrawable);
这里的问题是,根据specification,第6个参数定义为
可能为空。颜色数组中每个对应颜色的相对位置 [0..1]。如果为 null,则颜色沿渐变线均匀分布。
我希望红色和蓝色均匀分布,即一半的形状应该呈现红色,一半呈现蓝色(如下图所示)。
所以我尝试将null、new float[] {0, 0.5f} 和new float[] {0, 1} 作为第六个参数的值。我分别得到了以下三个结果。
显示我哪里出错了?我应该如何解决这个问题?
【问题讨论】:
-
见
ShapeDrawable.ShaderFactory -
@pskink 谢谢你我要去实现它。
-
@pskink 非常感谢。这行得通。您能否将其发布为答案,以便我将其标记为已接受。
-
请注意,使用
ShaderFactory时不需要调用shapeDrawable.getPaint().setShader(linearGradientShader);和shapeDrawable.setBounds(10, 10, 300, 30); -
哦,是的,我没有那样做。非常感谢。
标签: android android-drawable linear-gradients android-shapedrawable