Моя проблема в том, что при рисовании простого тестового изображения (прямоугольник с градиентной заливкой) в 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
внизу.Я понимаю, что в этом примере полосы очень тонкие; это еще более очевидно, когда градиент охватывает меньшую цветовую полосу.
Любые предложения, пожалуйста?
Трев