Моя проблема в том, что при рисовании простого тестового изображения (прямоугольник с градиентной заливкой) в пределах SurfaceView
градиент имеет цветную полосу. При рисовании точно такого же прямоугольника с тем же градиентом в простом расширенном View
, градиент выглядит очень плавным, и так хорошо, как и следовало ожидать для 32-битного цвета.
Это происходит бок о бок с использованием теста SurfaceView
, помещенного рядом с тестом View
в рамках той же схемы в том же Activity
.
Для информации, в классе Activity
я звоню window.setFormat(PixelFormat.RGBA_8888)
, чтобы переключить Activity на 32-битный цвет, поскольку в прошлом это было решением для устранения полос в градиентах (однако я считаю, что это не требуется больше на определенном уровне 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
внизу. Я понимаю, что объединение очень тонкое в этом примере; это еще более очевидно, когда градиент охватывает меньшую полосу цветов.
Есть предложения, пожалуйста?
Трев