Как правильно маскировать Bitmap с помощью LinearGradient shader?

Я пытаюсь замаскировать Bitmap с градиентом альфы внизу. Размер градиента фиксирован и не зависит от размера растрового изображения. Но он рисует неверно: нижний градиент сверху, чем верхний. Что не так?

Введите описание изображения здесь

Существует пример кода:

final int GRADIENT_HEIGHT = 32; public Bitmap addGradient(Bitmap src) { int w = src.getWidth(); int h = src.getHeight(); Bitmap overlay = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(overlay); canvas.drawBitmap(src, 0, 0, null); Paint paint = new Paint(); LinearGradient shader = new LinearGradient(0, 0, 0, GRADIENT_HEIGHT, 0xFFFFFFFF, 0x00FFFFFF, TileMode.REPEAT); paint.setShader(shader); paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN)); canvas.drawRect(0, h - GRADIENT_HEIGHT, w, h, paint); return overlay; } 

Благодаря!

Измените свой LinearGradient на это:

  LinearGradient shader = new LinearGradient(0, h - GRADIENT_HEIGHT, 0, h, 0xFFFFFFFF, 0x00FFFFFF, Shader.TileMode.CLAMP);