Android «Продвинутые» градиенты - позиции большого пальца? - PullRequest
4 голосов
/ 16 октября 2010

Я пытаюсь создать градиент для рисования, чтобы изобразить соотношение чего-либо.В качестве общего примера, скажем, вы просматривали список, содержащий парк автомобилей.Фон может быть указателем уровня топлива - я не хочу плавного, широкого перехода.Я хочу очень плотный переход, и я хочу иметь возможность установить, где этот переход происходит.

Вот то, с чего я смотрю, но я не очень далеко.

<?xml version="1.0" encoding="utf-8"?>
<shape 
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:shape="rectangle">
    <gradient 
        android:startColor="#D2E3D3" 
        android:endColor="#E6E6E3"
        android:angle="0"
     />
    <corners android:radius="0dp" />
</shape>

Спасибо!

1 Ответ

11 голосов
/ 16 октября 2010

Хорошо, вот как вы можете это сделать:

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

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

Тогда просто установите это как backroundDrawable

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