Шейдер как прорисовка (Android) - PullRequest
4 голосов
/ 04 мая 2010

Как использовать, чтобы получить отрисовку из Shader (например, LinearGradient), чтобы я мог использовать ее в качестве фона в своем пользовательском интерфейсе?

1 Ответ

16 голосов
/ 04 мая 2010

Поскольку фону, вероятно, потребуется изменить размер, мы будем использовать ShaderFactory для получения Shader:

ShapeDrawable.ShaderFactory sf=new ShapeDrawable.ShaderFactory() {
    @Override
    public Shader resize(int width, int height) {
        return new LinearGradient(0, 0, width, height,
            new int[]{Color.WHITE, Color.GRAY, Color.BLACK},
            new float[]{0,0.5f,1}, Shader.TileMode.MIRROR);
    }
};

Мы используем это для создания PaintDrawable, который мы можем использовать в качестве фона:

PaintDrawable p=new PaintDrawable();
p.setShape(new RectShape());
p.setShaderFactory(sf);
getWindow().setBackgroundDrawable(p);

Это всего лишь пример, и в этом случае было бы лучше просто объявить это , используя XML . Посмотрите на пример здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...