I'm developing a class to color my button drawer. I have a gradient class with the 6 colors I wanna use:
public class Gradients {
final int [] colors;
public Gradients(Context context) {
this.colors = new int[]{
context.getResources().getColor(R.color.color_gradient_3),
context.getResources().getColor(R.color.color_gradient_4),
context.getResources().getColor(R.color.color_gradient_5),
context.getResources().getColor(R.color.color_gradient_2),
context.getResources().getColor(R.color.color_gradient_0),
context.getResources().getColor(R.color.color_gradient_1)
};
}
}
And in another class I have my method which colors the border:
init {
val gradients = Gradients(context)
shaderHeight = context.resources.getDimensionPixelSize(R.dimen.micro_margin)
shaderFactory = object : ShaderFactory() {
override fun resize(width: Int, height: Int): Shader {
return LinearGradient(
0f, 0f, width.toFloat(), (height - shaderHeight).toFloat(),
gradients.colors, null, TileMode.MIRROR)
}
}
shaderBorderPaint.style = Style.STROKE
shaderBorderPaint.strokeWidth = 6f
}
The problem is that it mirrors the color instead of using all of them. The results is this:
The result I want is this, where all the colors are linearly placed, without repeting themselves:
How can I achieve it?
EDIT: This is the result using a SweepGradient, it only shows 2 colors: