Горизонтальный линейный градиент с 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);
но вместо этого градиент идет у смешного ангела или есть только один цвет... Я также старался играть с координатами градиента всякими способами (думая, что, возможно, их нужно преобразовать), чтобы нет помогло. Что мне не хватает?
Ответы
Ответ 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);