Градиент отображается полосатым в SurfaceView, но выглядит очень гладким в обычном представлении

Моя проблема в том, что при рисовании простого тестового изображения (прямоугольник с градиентной заливкой) в SurfaceView градиент имеет цветные полосы. При рисовании точно такого же прямоугольника с тем же градиентом в простом расширенном представлении градиент выглядит очень плавным и таким же красивым, как и следовало ожидать от 32-битного цвета.

Это происходит бок о бок при использовании тестового SurfaceView , размещенного рядом с тестовым View в том же макете в том же Activity .

Для информации, в классе Activity я вызываю window.setFormat (PixelFormat.RGBA_8888) , чтобы переключить Activity на 32-битный цвет, поскольку это было решение в past, чтобы устранить полосатость в градиентах (однако я считаю, что это больше не требуется на определенном уровне Android, где по умолчанию используется 32-разрядная версия). Моя minSdkVersion - 8.

Тестовый код, который появляется в onDraw () как простого расширенного View , так и SurfaceView ]:

    Paint paint = new Paint();
    paint.setStyle(Paint.Style.FILL);
    paint.setAntiAlias(false);
    paint.setFilterBitmap(false);
    paint.setDither(false); 
    Shader shader = new LinearGradient(
            0,
            0,
            0,
            200,
            new int[]{0xff150d2f,0xff432b96},
            null,
            Shader.TileMode.CLAMP
            );

    paint.setShader(shader);    
    canvas.drawRect(0,0,getWidth(),getHeight(), paint);

Вот скриншот, показывающий SurfaceView вверху и нормальный View внизу.Я понимаю, что в этом примере полосы очень тонкие; это еще более очевидно, когда градиент охватывает меньшую цветовую полосу.

Screenshot

Любые предложения, пожалуйста?

Трев

7
задан Trevor 15 October 2011 в 00:23
поделиться