Подтвердить что ты не робот

Горизонтальный линейный градиент с android

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

int x1 = 0, y1 = 0, x2 = 100,  y2 = 40;
Shader shader = new LinearGradient(x1, y1, x2, y2, Color.WHITE, Color.BLACK, TileMode.CLAMP);
Paint paint = new Paint();
paint.setShader(shader);
canvas.drawRect(new RectF(x1, y1, x2, y2), paint);

Хорошо, отлично. Теперь я хотел бы изменить этот градиент на горизонтальный, чтобы цвет шел от белого до черного, сверху вниз. Я попытался добавить:

Matrix trans = new Matrix();
trans.setRotate(90);
shader.setLocalMatrix(trans);

но вместо этого градиент идет у смешного ангела или есть только один цвет... Я также старался играть с координатами градиента всякими способами (думая, что, возможно, их нужно преобразовать), чтобы нет помогло. Что мне не хватает?

4b9b3361

Ответ 1

Не то, чтобы я сделал много кодировок для Android, но, безусловно, все, что вам нужно сделать, это:

int x1 = 0, y1 = 0, x2 = 0,  y2 = 40;

Таким образом, x никогда не изменяется в градиенте, только y делает.

Итак, в основном:

Shader shader = new LinearGradient(0, 0, 0, 40, Color.WHITE, Color.BLACK, TileMode.CLAMP);
Paint paint = new Paint(); 
paint.setShader(shader); 
canvas.drawRect(new RectF(0, 0, 100, 40), paint);