Горизонтальный линейный градиент с 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); 

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

Solutions Collecting From Web of "Горизонтальный линейный градиент с android"

Не то, чтобы я сделал много кодировок для 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);