Линейный градиент оттягивается от заданного положения

Я сделал градиент оттенка с Lineargradient с помощью этого кода: (Я знаю, что его можно было бы упростить с помощью Color.parseColor но он должен быть таким образом, что я намереваюсь сделать. Я тоже не могу использовать drawable.)

 colors = new int[]{ Color.HSVToColor(new float[]{0, 1, 1}), Color.HSVToColor(new float[]{60, 1, 1}), Color.HSVToColor(new float[]{120, 1, 1}), Color.HSVToColor(new float[]{180, 1, 1}), Color.HSVToColor(new float[]{240, 1, 1}), Color.HSVToColor(new float[]{300, 1, 1}), Color.HSVToColor(new float[]{360, 1, 1}) }; Shader shader = new LinearGradient(0, 0, width, 0, colors, null, Shader.TileMode.CLAMP); paint.setShader(shader); 

Который производит этот результат со слегка смещенными цветами, зеленая область слишком мала, а синяя область слишком велика по сравнению с ожидаемым результатом.

сравнение

Я все проверил. Я попытался использовать new float[]{0f, 1/6f, 2/6f, 3/6f, 4/6f, 5/6f, 1f} вместо null для аргумента позиции, тот же результат. Возможно, это тоже ошибка.

Обратите внимание, что это не дубликат этого сообщения и этого . Это о некорректных градиентных остановках, установленных в коде, что не является моим делом. Это может быть связано с этим, но я не понимаю, как это сделать.

EDIT: Может быть, это можно решить, установив неравные позиции в цвета, но как я могу рассчитать эти точные позиции?

Solutions Collecting From Web of "Линейный градиент оттягивается от заданного положения"

Я работал над тем, чтобы решить это более 3 часов в целом и хорошо … получается, что это было почти ничего. И это было в моем коде. Хуже всего то, что я добавил щедрость и решил это через 15 минут.

Я рисовал градиент в виде с определенным дополнением, а вместо этого

 LinearGradient(0, 0, width, 0, colors, null, Shader.TileMode.CLAMP); 

Я должен был сделать это:

 LinearGradient(left, 0, right, 0, colors, null, Shader.TileMode.CLAMP); 

Каким-то образом градиент начинается до заполнения, которое я добавил к моему представлению, на (0, 0), что на 10 градусов слева от моего начала градиента, вызывая смещение.

Введите описание изображения здесь

Все это имеет смысл сейчас.